Update to 3.2.39
and update drm, agp to 3.4.32 svn path=/dists/sid/linux/; revision=19828
This commit is contained in:
parent
bf347b2893
commit
9fd3664528
|
@ -1,4 +1,4 @@
|
|||
linux (3.2.38-1) UNRELEASED; urgency=low
|
||||
linux (3.2.39-1) UNRELEASED; urgency=low
|
||||
|
||||
* New upstream stable update:
|
||||
http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.2.36
|
||||
|
@ -67,6 +67,38 @@ linux (3.2.38-1) UNRELEASED; urgency=low
|
|||
(Closes: #696321)
|
||||
- printk: fix buffer overflow when calling log_prefix function from
|
||||
call_console_drivers
|
||||
http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.2.39
|
||||
- USB: XHCI: fix memory leak of URB-private data
|
||||
- sched/rt: Use root_domain of rt_rq not current processor
|
||||
- mwifiex: fix incomplete scan in case of IE parsing error
|
||||
- x86-64: Replace left over sti/cli in ia32 audit exit code
|
||||
- Bluetooth: Fix handling of unexpected SMP PDUs
|
||||
- ptrace/x86: Partly fix set_task_blockstep()->update_debugctlmsr() logic
|
||||
- Fix race condition with PTRACE_SETREGS and fatal signal (CVE-2013-0871)
|
||||
+ ptrace: introduce signal_wake_up_state() and ptrace_signal_wake_up()
|
||||
+ ptrace: ensure arch_ptrace/ptrace_request can never race with SIGKILL
|
||||
+ wake_up_process() should be never used to wakeup a TASK_STOPPED/TRACED
|
||||
task
|
||||
- net: prevent setting ttl=0 via IP_TTL
|
||||
- ipv6: fix header length calculation in ip6_append_data()
|
||||
- netxen: fix off by one bug in netxen_release_tx_buffer()
|
||||
- r8169: remove the obsolete and incorrect AMD workaround
|
||||
- net: loopback: fix a dst refcounting issue
|
||||
- packet: fix leakage of tx_ring memory
|
||||
- net: sctp: sctp_setsockopt_auth_key: use kzfree instead of kfree
|
||||
- net: sctp: sctp_endpoint_free: zero out secret key data
|
||||
- xen/netback: shutdown the ring if it contains garbage. (CVE-2013-0216)
|
||||
- xen/netback: don't leak pages on failure in xen_netbk_tx_check_gop.
|
||||
- xen/netback: free already allocated memory on failure in
|
||||
xen_netbk_get_requests
|
||||
- netback: correct netbk_tx_err to handle wrap around. (CVE-2013-0217)
|
||||
- tcp: frto should not set snd_cwnd to 0
|
||||
- tcp: fix for zero packets_in_flight was too broad
|
||||
- tcp: fix MSG_SENDPAGE_NOTLAST logic
|
||||
- bridge: Pull ip header into skb->data before looking into ip header.
|
||||
(Closes: #697903)
|
||||
- x86/xen: don't assume %ds is usable in xen_iret for 32-bit PVOPS.
|
||||
(CVE-2013-0228)
|
||||
|
||||
[ Ben Hutchings ]
|
||||
* Input: wacom - fix touch support for Bamboo Fun CTH-461
|
||||
|
@ -114,8 +146,6 @@ linux (3.2.38-1) UNRELEASED; urgency=low
|
|||
- sched: Init idle->on_rq in init_idle()
|
||||
- sched: Check for idle task in might_sleep()
|
||||
- mm: swap: Initialize local locks early
|
||||
* bridge: Pull ip header into skb->data before looking into ip header.
|
||||
(Closes: #697903)
|
||||
* [armel/versatile,armhf/vexpress] i2c: Enable I2C, I2C_VERSATILE as modules
|
||||
(Closes: #696182)
|
||||
* ext4: Fix corruption by hole punch in large files (Closes: #685726)
|
||||
|
@ -144,6 +174,9 @@ linux (3.2.38-1) UNRELEASED; urgency=low
|
|||
- possible bugfix, au_lkup_by_ino() returns ESTALE
|
||||
* [x86] efi: Clear EFI_RUNTIME_SERVICES rather than EFI_BOOT by "noefi" boot
|
||||
parameter
|
||||
* drm, agp: Update to 3.4.32
|
||||
- drm/radeon: add WAIT_UNTIL to the non-VM safe regs list for cayman/TN
|
||||
- drm/radeon: prevent crash in the ring space allocation
|
||||
|
||||
[ Aurelien Jarno ]
|
||||
* [armhf/vexpress] Add kernel udebs.
|
||||
|
|
|
@ -1,30 +0,0 @@
|
|||
From: Sarveshwar Bandi <sarveshwar.bandi@emulex.com>
|
||||
Date: Wed, 10 Oct 2012 01:15:01 +0000
|
||||
Subject: bridge: Pull ip header into skb->data before looking into ip header.
|
||||
|
||||
commit 6caab7b0544e83e6c160b5e80f5a4a7dd69545c7 upstream.
|
||||
|
||||
If lower layer driver leaves the ip header in the skb fragment, it needs to
|
||||
be first pulled into skb->data before inspecting ip header length or ip version
|
||||
number.
|
||||
|
||||
Signed-off-by: Sarveshwar Bandi <sarveshwar.bandi@emulex.com>
|
||||
Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
---
|
||||
net/bridge/br_netfilter.c | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
diff --git a/net/bridge/br_netfilter.c b/net/bridge/br_netfilter.c
|
||||
index 68e8f36..fe43bc7 100644
|
||||
--- a/net/bridge/br_netfilter.c
|
||||
+++ b/net/bridge/br_netfilter.c
|
||||
@@ -265,6 +265,9 @@ static int br_parse_ip_options(struct sk_buff *skb)
|
||||
struct net_device *dev = skb->dev;
|
||||
u32 len;
|
||||
|
||||
+ if (!pskb_may_pull(skb, sizeof(struct iphdr)))
|
||||
+ goto inhdr_error;
|
||||
+
|
||||
iph = ip_hdr(skb);
|
||||
opt = &(IPCB(skb)->opt);
|
||||
|
|
@ -47730,7 +47730,7 @@ index fee0ad0..342ffb7 100644
|
|||
|
||||
drm_encoder_helper_add(&crt->base.base, &intel_crt_helper_funcs);
|
||||
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
|
||||
index c05e825..3c9b9c5 100644
|
||||
index 7817429..3c9b9c5 100644
|
||||
--- a/drivers/gpu/drm/i915/intel_display.c
|
||||
+++ b/drivers/gpu/drm/i915/intel_display.c
|
||||
@@ -75,7 +75,7 @@ struct intel_limit {
|
||||
|
@ -49051,13 +49051,11 @@ index c05e825..3c9b9c5 100644
|
|||
OUT_RING(obj->gtt_offset | obj->tiling_mode);
|
||||
|
||||
/* XXX Enabling the panel-fitter across page-flip is so far
|
||||
@@ -7154,15 +7441,11 @@ static int intel_gen4_queue_flip(struct drm_device *dev,
|
||||
@@ -7154,13 +7441,11 @@ static int intel_gen4_queue_flip(struct drm_device *dev,
|
||||
pf = 0;
|
||||
pipesrc = I915_READ(PIPESRC(intel_crtc->pipe)) & 0x0fff0fff;
|
||||
OUT_RING(pf | pipesrc);
|
||||
-
|
||||
- intel_mark_page_flip_active(intel_crtc);
|
||||
-
|
||||
- intel_mark_page_flip_active(intel_crtc);
|
||||
ADVANCE_LP_RING();
|
||||
return 0;
|
||||
|
@ -49068,7 +49066,7 @@ index c05e825..3c9b9c5 100644
|
|||
err:
|
||||
return ret;
|
||||
}
|
||||
@@ -7187,17 +7470,23 @@ static int intel_gen6_queue_flip(struct drm_device *dev,
|
||||
@@ -7185,19 +7470,23 @@ static int intel_gen6_queue_flip(struct drm_device *dev,
|
||||
|
||||
OUT_RING(MI_DISPLAY_FLIP |
|
||||
MI_DISPLAY_FLIP_PLANE(intel_crtc->plane));
|
||||
|
@ -49086,6 +49084,8 @@ index c05e825..3c9b9c5 100644
|
|||
+ pf = 0;
|
||||
pipesrc = I915_READ(PIPESRC(intel_crtc->pipe)) & 0x0fff0fff;
|
||||
OUT_RING(pf | pipesrc);
|
||||
-
|
||||
- intel_mark_page_flip_active(intel_crtc);
|
||||
ADVANCE_LP_RING();
|
||||
return 0;
|
||||
|
||||
|
@ -72957,7 +72957,7 @@ index 7b4eeb7..19a0114 100644
|
|||
#include <linux/kernel.h>
|
||||
|
||||
diff --git a/drivers/gpu/drm/radeon/evergreen.c b/drivers/gpu/drm/radeon/evergreen.c
|
||||
index 0977849..4a1d8f3 100644
|
||||
index 0977849..c62132c 100644
|
||||
--- a/drivers/gpu/drm/radeon/evergreen.c
|
||||
+++ b/drivers/gpu/drm/radeon/evergreen.c
|
||||
@@ -50,6 +50,39 @@ static const u32 crtc_offsets[6] =
|
||||
|
@ -73009,7 +73009,7 @@ index 0977849..4a1d8f3 100644
|
|||
{
|
||||
u32 tmp = RREG32(MC_SHARED_CHMAP);
|
||||
|
||||
@@ -1109,11 +1142,20 @@ void evergreen_mc_stop(struct radeon_device *rdev, struct evergreen_mc_save *sav
|
||||
@@ -1109,11 +1142,24 @@ void evergreen_mc_stop(struct radeon_device *rdev, struct evergreen_mc_save *sav
|
||||
crtc_enabled = RREG32(EVERGREEN_CRTC_CONTROL + crtc_offsets[i]) & EVERGREEN_CRTC_MASTER_EN;
|
||||
if (crtc_enabled) {
|
||||
save->crtc_enabled[i] = true;
|
||||
|
@ -73023,19 +73023,23 @@ index 0977849..4a1d8f3 100644
|
|||
+ if (!(tmp & EVERGREEN_CRTC_BLANK_DATA_EN)) {
|
||||
+ radeon_wait_for_vblank(rdev, i);
|
||||
+ tmp |= EVERGREEN_CRTC_BLANK_DATA_EN;
|
||||
+ WREG32(EVERGREEN_CRTC_UPDATE_LOCK + crtc_offsets[i], 1);
|
||||
+ WREG32(EVERGREEN_CRTC_BLANK_CONTROL + crtc_offsets[i], tmp);
|
||||
+ WREG32(EVERGREEN_CRTC_UPDATE_LOCK + crtc_offsets[i], 0);
|
||||
+ }
|
||||
+ } else {
|
||||
+ tmp = RREG32(EVERGREEN_CRTC_CONTROL + crtc_offsets[i]);
|
||||
+ if (!(tmp & EVERGREEN_CRTC_DISP_READ_REQUEST_DISABLE)) {
|
||||
+ radeon_wait_for_vblank(rdev, i);
|
||||
+ tmp |= EVERGREEN_CRTC_DISP_READ_REQUEST_DISABLE;
|
||||
+ WREG32(EVERGREEN_CRTC_UPDATE_LOCK + crtc_offsets[i], 1);
|
||||
+ WREG32(EVERGREEN_CRTC_CONTROL + crtc_offsets[i], tmp);
|
||||
+ WREG32(EVERGREEN_CRTC_UPDATE_LOCK + crtc_offsets[i], 0);
|
||||
+ }
|
||||
}
|
||||
/* wait for the next frame */
|
||||
frame_count = radeon_get_vblank_counter(rdev, i);
|
||||
@@ -1127,7 +1169,7 @@ void evergreen_mc_stop(struct radeon_device *rdev, struct evergreen_mc_save *sav
|
||||
@@ -1127,7 +1173,7 @@ void evergreen_mc_stop(struct radeon_device *rdev, struct evergreen_mc_save *sav
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -73044,7 +73048,16 @@ index 0977849..4a1d8f3 100644
|
|||
|
||||
blackout = RREG32(MC_SHARED_BLACKOUT_CNTL);
|
||||
if ((blackout & BLACKOUT_MODE_MASK) != 1) {
|
||||
@@ -1166,10 +1208,16 @@ void evergreen_mc_resume(struct radeon_device *rdev, struct evergreen_mc_save *s
|
||||
@@ -1137,6 +1183,8 @@ void evergreen_mc_stop(struct radeon_device *rdev, struct evergreen_mc_save *sav
|
||||
blackout &= ~BLACKOUT_MODE_MASK;
|
||||
WREG32(MC_SHARED_BLACKOUT_CNTL, blackout | 1);
|
||||
}
|
||||
+ /* wait for the MC to settle */
|
||||
+ udelay(100);
|
||||
}
|
||||
|
||||
void evergreen_mc_resume(struct radeon_device *rdev, struct evergreen_mc_save *save)
|
||||
@@ -1166,10 +1214,20 @@ void evergreen_mc_resume(struct radeon_device *rdev, struct evergreen_mc_save *s
|
||||
WREG32(BIF_FB_EN, FB_READ_EN | FB_WRITE_EN);
|
||||
|
||||
for (i = 0; i < rdev->num_crtc; i++) {
|
||||
|
@ -73056,16 +73069,20 @@ index 0977849..4a1d8f3 100644
|
|||
+ if (ASIC_IS_DCE6(rdev)) {
|
||||
+ tmp = RREG32(EVERGREEN_CRTC_BLANK_CONTROL + crtc_offsets[i]);
|
||||
+ tmp |= EVERGREEN_CRTC_BLANK_DATA_EN;
|
||||
+ WREG32(EVERGREEN_CRTC_UPDATE_LOCK + crtc_offsets[i], 1);
|
||||
+ WREG32(EVERGREEN_CRTC_BLANK_CONTROL + crtc_offsets[i], tmp);
|
||||
+ WREG32(EVERGREEN_CRTC_UPDATE_LOCK + crtc_offsets[i], 0);
|
||||
+ } else {
|
||||
+ tmp = RREG32(EVERGREEN_CRTC_CONTROL + crtc_offsets[i]);
|
||||
+ tmp &= ~EVERGREEN_CRTC_DISP_READ_REQUEST_DISABLE;
|
||||
+ WREG32(EVERGREEN_CRTC_UPDATE_LOCK + crtc_offsets[i], 1);
|
||||
+ WREG32(EVERGREEN_CRTC_CONTROL + crtc_offsets[i], tmp);
|
||||
+ WREG32(EVERGREEN_CRTC_UPDATE_LOCK + crtc_offsets[i], 0);
|
||||
+ }
|
||||
/* wait for the next frame */
|
||||
frame_count = radeon_get_vblank_counter(rdev, i);
|
||||
for (j = 0; j < rdev->usec_timeout; j++) {
|
||||
@@ -1229,7 +1277,10 @@ void evergreen_mc_program(struct radeon_device *rdev)
|
||||
@@ -1229,7 +1287,10 @@ void evergreen_mc_program(struct radeon_device *rdev)
|
||||
rdev->mc.vram_end >> 12);
|
||||
}
|
||||
WREG32(MC_VM_SYSTEM_APERTURE_DEFAULT_ADDR, rdev->vram_scratch.gpu_addr >> 12);
|
||||
|
@ -73077,7 +73094,7 @@ index 0977849..4a1d8f3 100644
|
|||
tmp = RREG32(MC_FUS_VM_FB_OFFSET) & 0x000FFFFF;
|
||||
tmp |= ((rdev->mc.vram_end >> 20) & 0xF) << 24;
|
||||
tmp |= ((rdev->mc.vram_start >> 20) & 0xF) << 20;
|
||||
@@ -1264,18 +1315,20 @@ void evergreen_mc_program(struct radeon_device *rdev)
|
||||
@@ -1264,18 +1325,20 @@ void evergreen_mc_program(struct radeon_device *rdev)
|
||||
*/
|
||||
void evergreen_ring_ib_execute(struct radeon_device *rdev, struct radeon_ib *ib)
|
||||
{
|
||||
|
@ -73104,7 +73121,7 @@ index 0977849..4a1d8f3 100644
|
|||
}
|
||||
|
||||
|
||||
@@ -1313,71 +1366,73 @@ static int evergreen_cp_load_microcode(struct radeon_device *rdev)
|
||||
@@ -1313,71 +1376,73 @@ static int evergreen_cp_load_microcode(struct radeon_device *rdev)
|
||||
|
||||
static int evergreen_cp_start(struct radeon_device *rdev)
|
||||
{
|
||||
|
@ -73209,7 +73226,7 @@ index 0977849..4a1d8f3 100644
|
|||
u32 tmp;
|
||||
u32 rb_bufsz;
|
||||
int r;
|
||||
@@ -1395,13 +1450,14 @@ int evergreen_cp_resume(struct radeon_device *rdev)
|
||||
@@ -1395,13 +1460,14 @@ int evergreen_cp_resume(struct radeon_device *rdev)
|
||||
RREG32(GRBM_SOFT_RESET);
|
||||
|
||||
/* Set ring buffer size */
|
||||
|
@ -73226,7 +73243,7 @@ index 0977849..4a1d8f3 100644
|
|||
|
||||
/* Set the write pointer delay */
|
||||
WREG32(CP_RB_WPTR_DELAY, 0);
|
||||
@@ -1409,8 +1465,8 @@ int evergreen_cp_resume(struct radeon_device *rdev)
|
||||
@@ -1409,8 +1475,8 @@ int evergreen_cp_resume(struct radeon_device *rdev)
|
||||
/* Initialize the ring buffer's read and write pointers */
|
||||
WREG32(CP_RB_CNTL, tmp | RB_RPTR_WR_ENA);
|
||||
WREG32(CP_RB_RPTR_WR, 0);
|
||||
|
@ -73237,7 +73254,7 @@ index 0977849..4a1d8f3 100644
|
|||
|
||||
/* set the wb address wether it's enabled or not */
|
||||
WREG32(CP_RB_RPTR_ADDR,
|
||||
@@ -1428,16 +1484,16 @@ int evergreen_cp_resume(struct radeon_device *rdev)
|
||||
@@ -1428,16 +1494,16 @@ int evergreen_cp_resume(struct radeon_device *rdev)
|
||||
mdelay(1);
|
||||
WREG32(CP_RB_CNTL, tmp);
|
||||
|
||||
|
@ -73259,7 +73276,7 @@ index 0977849..4a1d8f3 100644
|
|||
return r;
|
||||
}
|
||||
return 0;
|
||||
@@ -1730,7 +1786,7 @@ static void evergreen_gpu_init(struct radeon_device *rdev)
|
||||
@@ -1730,7 +1796,7 @@ static void evergreen_gpu_init(struct radeon_device *rdev)
|
||||
case CHIP_SUMO:
|
||||
rdev->config.evergreen.num_ses = 1;
|
||||
rdev->config.evergreen.max_pipes = 4;
|
||||
|
@ -73268,7 +73285,7 @@ index 0977849..4a1d8f3 100644
|
|||
if (rdev->pdev->device == 0x9648)
|
||||
rdev->config.evergreen.max_simds = 3;
|
||||
else if ((rdev->pdev->device == 0x9647) ||
|
||||
@@ -1819,7 +1875,7 @@ static void evergreen_gpu_init(struct radeon_device *rdev)
|
||||
@@ -1819,7 +1885,7 @@ static void evergreen_gpu_init(struct radeon_device *rdev)
|
||||
break;
|
||||
case CHIP_CAICOS:
|
||||
rdev->config.evergreen.num_ses = 1;
|
||||
|
@ -73277,7 +73294,7 @@ index 0977849..4a1d8f3 100644
|
|||
rdev->config.evergreen.max_tile_pipes = 2;
|
||||
rdev->config.evergreen.max_simds = 2;
|
||||
rdev->config.evergreen.max_backends = 1 * rdev->config.evergreen.num_ses;
|
||||
@@ -1868,7 +1924,9 @@ static void evergreen_gpu_init(struct radeon_device *rdev)
|
||||
@@ -1868,7 +1934,9 @@ static void evergreen_gpu_init(struct radeon_device *rdev)
|
||||
|
||||
|
||||
mc_shared_chmap = RREG32(MC_SHARED_CHMAP);
|
||||
|
@ -73288,7 +73305,7 @@ index 0977849..4a1d8f3 100644
|
|||
mc_arb_ramcfg = RREG32(FUS_MC_ARB_RAMCFG);
|
||||
else
|
||||
mc_arb_ramcfg = RREG32(MC_ARB_RAMCFG);
|
||||
@@ -2272,7 +2330,9 @@ int evergreen_mc_init(struct radeon_device *rdev)
|
||||
@@ -2272,7 +2340,9 @@ int evergreen_mc_init(struct radeon_device *rdev)
|
||||
|
||||
/* Get VRAM informations */
|
||||
rdev->mc.vram_is_ddr = true;
|
||||
|
@ -73299,7 +73316,7 @@ index 0977849..4a1d8f3 100644
|
|||
tmp = RREG32(FUS_MC_ARB_RAMCFG);
|
||||
else
|
||||
tmp = RREG32(MC_ARB_RAMCFG);
|
||||
@@ -2304,12 +2364,14 @@ int evergreen_mc_init(struct radeon_device *rdev)
|
||||
@@ -2304,12 +2374,14 @@ int evergreen_mc_init(struct radeon_device *rdev)
|
||||
rdev->mc.aper_base = pci_resource_start(rdev->pdev, 0);
|
||||
rdev->mc.aper_size = pci_resource_len(rdev->pdev, 0);
|
||||
/* Setup GPU memory space */
|
||||
|
@ -73316,7 +73333,7 @@ index 0977849..4a1d8f3 100644
|
|||
rdev->mc.mc_vram_size = RREG32(CONFIG_MEMSIZE) * 1024 * 1024;
|
||||
rdev->mc.real_vram_size = RREG32(CONFIG_MEMSIZE) * 1024 * 1024;
|
||||
}
|
||||
@@ -2320,7 +2382,7 @@ int evergreen_mc_init(struct radeon_device *rdev)
|
||||
@@ -2320,7 +2392,7 @@ int evergreen_mc_init(struct radeon_device *rdev)
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -73325,7 +73342,7 @@ index 0977849..4a1d8f3 100644
|
|||
{
|
||||
u32 srbm_status;
|
||||
u32 grbm_status;
|
||||
@@ -2333,19 +2395,19 @@ bool evergreen_gpu_is_lockup(struct radeon_device *rdev)
|
||||
@@ -2333,19 +2405,19 @@ bool evergreen_gpu_is_lockup(struct radeon_device *rdev)
|
||||
grbm_status_se0 = RREG32(GRBM_STATUS_SE0);
|
||||
grbm_status_se1 = RREG32(GRBM_STATUS_SE1);
|
||||
if (!(grbm_status & GUI_ACTIVE)) {
|
||||
|
@ -73352,7 +73369,7 @@ index 0977849..4a1d8f3 100644
|
|||
}
|
||||
|
||||
static int evergreen_gpu_soft_reset(struct radeon_device *rdev)
|
||||
@@ -2437,7 +2499,13 @@ void evergreen_disable_interrupt_state(struct radeon_device *rdev)
|
||||
@@ -2437,7 +2509,13 @@ void evergreen_disable_interrupt_state(struct radeon_device *rdev)
|
||||
{
|
||||
u32 tmp;
|
||||
|
||||
|
@ -73367,7 +73384,7 @@ index 0977849..4a1d8f3 100644
|
|||
WREG32(GRBM_INT_CNTL, 0);
|
||||
WREG32(INT_MASK + EVERGREEN_CRTC0_REGISTER_OFFSET, 0);
|
||||
WREG32(INT_MASK + EVERGREEN_CRTC1_REGISTER_OFFSET, 0);
|
||||
@@ -2461,7 +2529,9 @@ void evergreen_disable_interrupt_state(struct radeon_device *rdev)
|
||||
@@ -2461,7 +2539,9 @@ void evergreen_disable_interrupt_state(struct radeon_device *rdev)
|
||||
WREG32(GRPH_INT_CONTROL + EVERGREEN_CRTC5_REGISTER_OFFSET, 0);
|
||||
}
|
||||
|
||||
|
@ -73378,7 +73395,7 @@ index 0977849..4a1d8f3 100644
|
|||
WREG32(DACB_AUTODETECT_INT_CONTROL, 0);
|
||||
|
||||
tmp = RREG32(DC_HPD1_INT_CONTROL) & DC_HPDx_INT_POLARITY;
|
||||
@@ -2482,6 +2552,7 @@ void evergreen_disable_interrupt_state(struct radeon_device *rdev)
|
||||
@@ -2482,6 +2562,7 @@ void evergreen_disable_interrupt_state(struct radeon_device *rdev)
|
||||
int evergreen_irq_set(struct radeon_device *rdev)
|
||||
{
|
||||
u32 cp_int_cntl = CNTX_BUSY_INT_ENABLE | CNTX_EMPTY_INT_ENABLE;
|
||||
|
@ -73386,7 +73403,7 @@ index 0977849..4a1d8f3 100644
|
|||
u32 crtc1 = 0, crtc2 = 0, crtc3 = 0, crtc4 = 0, crtc5 = 0, crtc6 = 0;
|
||||
u32 hpd1, hpd2, hpd3, hpd4, hpd5, hpd6;
|
||||
u32 grbm_int_cntl = 0;
|
||||
@@ -2506,11 +2577,28 @@ int evergreen_irq_set(struct radeon_device *rdev)
|
||||
@@ -2506,11 +2587,28 @@ int evergreen_irq_set(struct radeon_device *rdev)
|
||||
hpd5 = RREG32(DC_HPD5_INT_CONTROL) & ~DC_HPDx_INT_EN;
|
||||
hpd6 = RREG32(DC_HPD6_INT_CONTROL) & ~DC_HPDx_INT_EN;
|
||||
|
||||
|
@ -73419,7 +73436,7 @@ index 0977849..4a1d8f3 100644
|
|||
if (rdev->irq.crtc_vblank_int[0] ||
|
||||
rdev->irq.pflip[0]) {
|
||||
DRM_DEBUG("evergreen_irq_set: vblank 0\n");
|
||||
@@ -2570,7 +2658,12 @@ int evergreen_irq_set(struct radeon_device *rdev)
|
||||
@@ -2570,7 +2668,12 @@ int evergreen_irq_set(struct radeon_device *rdev)
|
||||
grbm_int_cntl |= GUI_IDLE_INT_ENABLE;
|
||||
}
|
||||
|
||||
|
@ -73433,7 +73450,7 @@ index 0977849..4a1d8f3 100644
|
|||
WREG32(GRBM_INT_CNTL, grbm_int_cntl);
|
||||
|
||||
WREG32(INT_MASK + EVERGREEN_CRTC0_REGISTER_OFFSET, crtc1);
|
||||
@@ -2985,11 +3078,24 @@ restart_ih:
|
||||
@@ -2985,11 +3088,24 @@ restart_ih:
|
||||
case 177: /* CP_INT in IB1 */
|
||||
case 178: /* CP_INT in IB2 */
|
||||
DRM_DEBUG("IH: CP int: 0x%08x\n", src_data);
|
||||
|
@ -73460,7 +73477,7 @@ index 0977849..4a1d8f3 100644
|
|||
break;
|
||||
case 233: /* GUI IDLE */
|
||||
DRM_DEBUG("IH: GUI idle\n");
|
||||
@@ -3019,6 +3125,7 @@ restart_ih:
|
||||
@@ -3019,6 +3135,7 @@ restart_ih:
|
||||
|
||||
static int evergreen_startup(struct radeon_device *rdev)
|
||||
{
|
||||
|
@ -73468,7 +73485,7 @@ index 0977849..4a1d8f3 100644
|
|||
int r;
|
||||
|
||||
/* enable pcie gen2 link */
|
||||
@@ -3064,7 +3171,7 @@ static int evergreen_startup(struct radeon_device *rdev)
|
||||
@@ -3064,7 +3181,7 @@ static int evergreen_startup(struct radeon_device *rdev)
|
||||
r = evergreen_blit_init(rdev);
|
||||
if (r) {
|
||||
r600_blit_fini(rdev);
|
||||
|
@ -73477,7 +73494,7 @@ index 0977849..4a1d8f3 100644
|
|||
dev_warn(rdev->dev, "failed blitter (%d) falling back to memcpy\n", r);
|
||||
}
|
||||
|
||||
@@ -3073,6 +3180,12 @@ static int evergreen_startup(struct radeon_device *rdev)
|
||||
@@ -3073,6 +3190,12 @@ static int evergreen_startup(struct radeon_device *rdev)
|
||||
if (r)
|
||||
return r;
|
||||
|
||||
|
@ -73490,7 +73507,7 @@ index 0977849..4a1d8f3 100644
|
|||
/* Enable IRQ */
|
||||
r = r600_irq_init(rdev);
|
||||
if (r) {
|
||||
@@ -3082,7 +3195,9 @@ static int evergreen_startup(struct radeon_device *rdev)
|
||||
@@ -3082,7 +3205,9 @@ static int evergreen_startup(struct radeon_device *rdev)
|
||||
}
|
||||
evergreen_irq_set(rdev);
|
||||
|
||||
|
@ -73501,7 +73518,7 @@ index 0977849..4a1d8f3 100644
|
|||
if (r)
|
||||
return r;
|
||||
r = evergreen_cp_load_microcode(rdev);
|
||||
@@ -3092,6 +3207,23 @@ static int evergreen_startup(struct radeon_device *rdev)
|
||||
@@ -3092,6 +3217,23 @@ static int evergreen_startup(struct radeon_device *rdev)
|
||||
if (r)
|
||||
return r;
|
||||
|
||||
|
@ -73525,7 +73542,7 @@ index 0977849..4a1d8f3 100644
|
|||
return 0;
|
||||
}
|
||||
|
||||
@@ -3111,15 +3243,11 @@ int evergreen_resume(struct radeon_device *rdev)
|
||||
@@ -3111,15 +3253,11 @@ int evergreen_resume(struct radeon_device *rdev)
|
||||
/* post card */
|
||||
atom_asic_init(rdev->mode_info.atom_context);
|
||||
|
||||
|
@ -73543,7 +73560,7 @@ index 0977849..4a1d8f3 100644
|
|||
return r;
|
||||
}
|
||||
|
||||
@@ -3129,13 +3257,17 @@ int evergreen_resume(struct radeon_device *rdev)
|
||||
@@ -3129,13 +3267,17 @@ int evergreen_resume(struct radeon_device *rdev)
|
||||
|
||||
int evergreen_suspend(struct radeon_device *rdev)
|
||||
{
|
||||
|
@ -73563,7 +73580,7 @@ index 0977849..4a1d8f3 100644
|
|||
|
||||
return 0;
|
||||
}
|
||||
@@ -3210,8 +3342,8 @@ int evergreen_init(struct radeon_device *rdev)
|
||||
@@ -3210,8 +3352,8 @@ int evergreen_init(struct radeon_device *rdev)
|
||||
if (r)
|
||||
return r;
|
||||
|
||||
|
@ -73574,7 +73591,7 @@ index 0977849..4a1d8f3 100644
|
|||
|
||||
rdev->ih.ring_obj = NULL;
|
||||
r600_ih_ring_init(rdev, 64 * 1024);
|
||||
@@ -3220,29 +3352,24 @@ int evergreen_init(struct radeon_device *rdev)
|
||||
@@ -3220,29 +3362,24 @@ int evergreen_init(struct radeon_device *rdev)
|
||||
if (r)
|
||||
return r;
|
||||
|
||||
|
@ -73611,7 +73628,7 @@ index 0977849..4a1d8f3 100644
|
|||
|
||||
/* Don't start up if the MC ucode is missing on BTC parts.
|
||||
* The default clocks and voltages before the MC ucode
|
||||
@@ -3260,15 +3387,17 @@ int evergreen_init(struct radeon_device *rdev)
|
||||
@@ -3260,15 +3397,17 @@ int evergreen_init(struct radeon_device *rdev)
|
||||
|
||||
void evergreen_fini(struct radeon_device *rdev)
|
||||
{
|
||||
|
@ -85713,7 +85730,7 @@ index b6e18c8..9c6b29a 100644
|
|||
tmp = RREG32_PLL(RADEON_VCLK_ECP_CNTL);
|
||||
tmp &= ~(RADEON_PIXCLK_ALWAYS_ONb |
|
||||
diff --git a/drivers/gpu/drm/radeon/radeon_combios.c b/drivers/gpu/drm/radeon/radeon_combios.c
|
||||
index 1b98338..2cad9fd 100644
|
||||
index ec36dd9..a2470d9 100644
|
||||
--- a/drivers/gpu/drm/radeon/radeon_combios.c
|
||||
+++ b/drivers/gpu/drm/radeon/radeon_combios.c
|
||||
@@ -1536,9 +1536,6 @@ bool radeon_get_legacy_connector_info_from_table(struct drm_device *dev)
|
||||
|
@ -85854,7 +85871,7 @@ index 1b98338..2cad9fd 100644
|
|||
default:
|
||||
DRM_INFO("Connector table: %d (invalid)\n",
|
||||
rdev->mode_info.connector_table);
|
||||
@@ -2962,7 +2845,7 @@ bool radeon_combios_external_tmds_setup(struct drm_encoder *encoder)
|
||||
@@ -2970,7 +2853,7 @@ bool radeon_combios_external_tmds_setup(struct drm_encoder *encoder)
|
||||
case 4:
|
||||
val = RBIOS16(index);
|
||||
index += 2;
|
||||
|
@ -85863,7 +85880,7 @@ index 1b98338..2cad9fd 100644
|
|||
break;
|
||||
case 6:
|
||||
slave_addr = id & 0xff;
|
||||
@@ -3161,7 +3044,7 @@ static void combios_parse_pll_table(struct drm_device *dev, uint16_t offset)
|
||||
@@ -3169,7 +3052,7 @@ static void combios_parse_pll_table(struct drm_device *dev, uint16_t offset)
|
||||
udelay(150);
|
||||
break;
|
||||
case 2:
|
||||
|
@ -85872,7 +85889,7 @@ index 1b98338..2cad9fd 100644
|
|||
break;
|
||||
case 3:
|
||||
while (tmp--) {
|
||||
@@ -3192,13 +3075,13 @@ static void combios_parse_pll_table(struct drm_device *dev, uint16_t offset)
|
||||
@@ -3200,13 +3083,13 @@ static void combios_parse_pll_table(struct drm_device *dev, uint16_t offset)
|
||||
/*mclk_cntl |= 0x00001111;*//* ??? */
|
||||
WREG32_PLL(RADEON_MCLK_CNTL,
|
||||
mclk_cntl);
|
||||
|
@ -86494,7 +86511,7 @@ index 2132109..8fb6f41 100644
|
|||
struct drm_crtc *crtc_p;
|
||||
|
||||
diff --git a/drivers/gpu/drm/radeon/radeon_device.c b/drivers/gpu/drm/radeon/radeon_device.c
|
||||
index bd959c1..de5e0b5 100644
|
||||
index bd959c1..68c89db 100644
|
||||
--- a/drivers/gpu/drm/radeon/radeon_device.c
|
||||
+++ b/drivers/gpu/drm/radeon/radeon_device.c
|
||||
@@ -89,6 +89,10 @@ static const char radeon_family_name[][16] = {
|
||||
|
@ -86519,17 +86536,7 @@ index bd959c1..de5e0b5 100644
|
|||
rdev->wb.enabled = true;
|
||||
rdev->wb.use_event = true;
|
||||
}
|
||||
@@ -354,8 +358,7 @@ bool radeon_card_posted(struct radeon_device *rdev)
|
||||
{
|
||||
uint32_t reg;
|
||||
|
||||
- if (efi_enabled(EFI_BOOT) &&
|
||||
- rdev->pdev->subsystem_vendor == PCI_VENDOR_ID_APPLE)
|
||||
+ if (efi_enabled && rdev->pdev->subsystem_vendor == PCI_VENDOR_ID_APPLE)
|
||||
return false;
|
||||
|
||||
/* first check CRTCs */
|
||||
@@ -721,18 +724,25 @@ int radeon_device_init(struct radeon_device *rdev,
|
||||
@@ -721,18 +725,25 @@ int radeon_device_init(struct radeon_device *rdev,
|
||||
/* mutex initialization are all done here so we
|
||||
* can recall function without having locking issues */
|
||||
radeon_mutex_init(&rdev->cs_mutex);
|
||||
|
@ -86558,7 +86565,7 @@ index bd959c1..de5e0b5 100644
|
|||
|
||||
/* Set asic functions */
|
||||
r = radeon_asic_init(rdev);
|
||||
@@ -769,8 +779,14 @@ int radeon_device_init(struct radeon_device *rdev,
|
||||
@@ -769,8 +780,14 @@ int radeon_device_init(struct radeon_device *rdev,
|
||||
r = pci_set_dma_mask(rdev->pdev, DMA_BIT_MASK(dma_bits));
|
||||
if (r) {
|
||||
rdev->need_dma32 = true;
|
||||
|
@ -86573,7 +86580,7 @@ index bd959c1..de5e0b5 100644
|
|||
|
||||
/* Registers mapping */
|
||||
/* TODO: block userspace mapping of io register */
|
||||
@@ -818,15 +834,20 @@ int radeon_device_init(struct radeon_device *rdev,
|
||||
@@ -818,15 +835,20 @@ int radeon_device_init(struct radeon_device *rdev,
|
||||
if (r)
|
||||
return r;
|
||||
}
|
||||
|
@ -86595,7 +86602,7 @@ index bd959c1..de5e0b5 100644
|
|||
void radeon_device_fini(struct radeon_device *rdev)
|
||||
{
|
||||
DRM_INFO("radeon: finishing device.\n");
|
||||
@@ -841,6 +862,7 @@ void radeon_device_fini(struct radeon_device *rdev)
|
||||
@@ -841,6 +863,7 @@ void radeon_device_fini(struct radeon_device *rdev)
|
||||
rdev->rio_mem = NULL;
|
||||
iounmap(rdev->rmmio);
|
||||
rdev->rmmio = NULL;
|
||||
|
@ -86603,7 +86610,7 @@ index bd959c1..de5e0b5 100644
|
|||
}
|
||||
|
||||
|
||||
@@ -852,7 +874,7 @@ int radeon_suspend_kms(struct drm_device *dev, pm_message_t state)
|
||||
@@ -852,7 +875,7 @@ int radeon_suspend_kms(struct drm_device *dev, pm_message_t state)
|
||||
struct radeon_device *rdev;
|
||||
struct drm_crtc *crtc;
|
||||
struct drm_connector *connector;
|
||||
|
@ -86612,7 +86619,7 @@ index bd959c1..de5e0b5 100644
|
|||
|
||||
if (dev == NULL || dev->dev_private == NULL) {
|
||||
return -ENODEV;
|
||||
@@ -893,7 +915,8 @@ int radeon_suspend_kms(struct drm_device *dev, pm_message_t state)
|
||||
@@ -893,7 +916,8 @@ int radeon_suspend_kms(struct drm_device *dev, pm_message_t state)
|
||||
/* evict vram memory */
|
||||
radeon_bo_evict_vram(rdev);
|
||||
/* wait for gpu to finish processing current batch */
|
||||
|
@ -86622,7 +86629,7 @@ index bd959c1..de5e0b5 100644
|
|||
|
||||
radeon_save_bios_scratch_regs(rdev);
|
||||
|
||||
@@ -942,9 +965,11 @@ int radeon_resume_kms(struct drm_device *dev)
|
||||
@@ -942,9 +966,11 @@ int radeon_resume_kms(struct drm_device *dev)
|
||||
radeon_fbdev_set_suspend(rdev, 0);
|
||||
console_unlock();
|
||||
|
||||
|
@ -86636,7 +86643,7 @@ index bd959c1..de5e0b5 100644
|
|||
/* reset hpd state */
|
||||
radeon_hpd_init(rdev);
|
||||
/* blat the mode back in */
|
||||
@@ -994,36 +1019,29 @@ int radeon_gpu_reset(struct radeon_device *rdev)
|
||||
@@ -994,36 +1020,29 @@ int radeon_gpu_reset(struct radeon_device *rdev)
|
||||
/*
|
||||
* Debugfs
|
||||
*/
|
||||
|
@ -86679,7 +86686,7 @@ index bd959c1..de5e0b5 100644
|
|||
#if defined(CONFIG_DEBUG_FS)
|
||||
drm_debugfs_create_files(files, nfiles,
|
||||
rdev->ddev->control->debugfs_root,
|
||||
@@ -1035,6 +1053,22 @@ int radeon_debugfs_add_files(struct radeon_device *rdev,
|
||||
@@ -1035,6 +1054,22 @@ int radeon_debugfs_add_files(struct radeon_device *rdev,
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -86702,7 +86709,7 @@ index bd959c1..de5e0b5 100644
|
|||
#if defined(CONFIG_DEBUG_FS)
|
||||
int radeon_debugfs_init(struct drm_minor *minor)
|
||||
{
|
||||
@@ -1043,11 +1077,5 @@ int radeon_debugfs_init(struct drm_minor *minor)
|
||||
@@ -1043,11 +1078,5 @@ int radeon_debugfs_init(struct drm_minor *minor)
|
||||
|
||||
void radeon_debugfs_cleanup(struct drm_minor *minor)
|
||||
{
|
||||
|
@ -86715,7 +86722,7 @@ index bd959c1..de5e0b5 100644
|
|||
}
|
||||
#endif
|
||||
diff --git a/drivers/gpu/drm/radeon/radeon_display.c b/drivers/gpu/drm/radeon/radeon_display.c
|
||||
index aec8e0c..1f50727 100644
|
||||
index 63e7143..00d9cac 100644
|
||||
--- a/drivers/gpu/drm/radeon/radeon_display.c
|
||||
+++ b/drivers/gpu/drm/radeon/radeon_display.c
|
||||
@@ -303,8 +303,17 @@ void radeon_crtc_handle_flip(struct radeon_device *rdev, int crtc_id)
|
||||
|
@ -86818,9 +86825,9 @@ index aec8e0c..1f50727 100644
|
|||
return ERR_PTR(-ENOENT);
|
||||
}
|
||||
|
||||
@@ -1113,7 +1132,12 @@ radeon_user_framebuffer_create(struct drm_device *dev,
|
||||
if (radeon_fb == NULL)
|
||||
@@ -1115,7 +1134,12 @@ radeon_user_framebuffer_create(struct drm_device *dev,
|
||||
return ERR_PTR(-ENOMEM);
|
||||
}
|
||||
|
||||
- radeon_framebuffer_init(dev, radeon_fb, mode_cmd, obj);
|
||||
+ ret = radeon_framebuffer_init(dev, radeon_fb, mode_cmd, obj);
|
||||
|
@ -86832,7 +86839,7 @@ index aec8e0c..1f50727 100644
|
|||
|
||||
return &radeon_fb->base;
|
||||
}
|
||||
@@ -1129,11 +1153,6 @@ static const struct drm_mode_config_funcs radeon_mode_funcs = {
|
||||
@@ -1131,11 +1155,6 @@ static const struct drm_mode_config_funcs radeon_mode_funcs = {
|
||||
.output_poll_changed = radeon_output_poll_changed
|
||||
};
|
||||
|
||||
|
@ -86844,7 +86851,7 @@ index aec8e0c..1f50727 100644
|
|||
static struct drm_prop_enum_list radeon_tmds_pll_enum_list[] =
|
||||
{ { 0, "driver" },
|
||||
{ 1, "bios" },
|
||||
@@ -1158,86 +1177,53 @@ static struct drm_prop_enum_list radeon_underscan_enum_list[] =
|
||||
@@ -1160,86 +1179,53 @@ static struct drm_prop_enum_list radeon_underscan_enum_list[] =
|
||||
|
||||
static int radeon_modeset_create_props(struct radeon_device *rdev)
|
||||
{
|
||||
|
@ -86947,7 +86954,7 @@ index aec8e0c..1f50727 100644
|
|||
|
||||
return 0;
|
||||
}
|
||||
@@ -1283,6 +1269,9 @@ int radeon_modeset_init(struct radeon_device *rdev)
|
||||
@@ -1285,6 +1271,9 @@ int radeon_modeset_init(struct radeon_device *rdev)
|
||||
rdev->ddev->mode_config.max_height = 4096;
|
||||
}
|
||||
|
||||
|
@ -86957,7 +86964,7 @@ index aec8e0c..1f50727 100644
|
|||
rdev->ddev->mode_config.fb_base = rdev->mc.aper_base;
|
||||
|
||||
ret = radeon_modeset_create_props(rdev);
|
||||
@@ -1310,9 +1299,11 @@ int radeon_modeset_init(struct radeon_device *rdev)
|
||||
@@ -1312,9 +1301,11 @@ int radeon_modeset_init(struct radeon_device *rdev)
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -89384,7 +89391,7 @@ index b4ce864..5d8f735 100644
|
|||
# define RADEON_CRTC2_VBLANK_SAVE_CLEAR (1 << 1)
|
||||
#define RADEON_CRTC_V_SYNC_STRT_WID 0x020c
|
||||
diff --git a/drivers/gpu/drm/radeon/radeon_ring.c b/drivers/gpu/drm/radeon/radeon_ring.c
|
||||
index 49d5820..cc33b3d 100644
|
||||
index 65be5e8..33eff8b 100644
|
||||
--- a/drivers/gpu/drm/radeon/radeon_ring.c
|
||||
+++ b/drivers/gpu/drm/radeon/radeon_ring.c
|
||||
@@ -34,6 +34,7 @@
|
||||
|
@ -89419,17 +89426,31 @@ index 49d5820..cc33b3d 100644
|
|||
}
|
||||
|
||||
-void radeon_ib_bogus_cleanup(struct radeon_device *rdev)
|
||||
+/*
|
||||
+ * IB.
|
||||
+ */
|
||||
+bool radeon_ib_try_free(struct radeon_device *rdev, struct radeon_ib *ib)
|
||||
{
|
||||
-{
|
||||
- struct radeon_ib *ib, *n;
|
||||
-
|
||||
- list_for_each_entry_safe(ib, n, &rdev->ib_pool.bogus_ib, list) {
|
||||
- list_del(&ib->list);
|
||||
- vfree(ib->ptr);
|
||||
- kfree(ib);
|
||||
- }
|
||||
-}
|
||||
-
|
||||
-void radeon_ib_bogus_add(struct radeon_device *rdev, struct radeon_ib *ib)
|
||||
+/*
|
||||
+ * IB.
|
||||
+ */
|
||||
+bool radeon_ib_try_free(struct radeon_device *rdev, struct radeon_ib *ib)
|
||||
{
|
||||
- struct radeon_ib *bib;
|
||||
-
|
||||
- bib = kmalloc(sizeof(*bib), GFP_KERNEL);
|
||||
- if (bib == NULL)
|
||||
- return;
|
||||
- bib->ptr = vmalloc(ib->length_dw * 4);
|
||||
- if (bib->ptr == NULL) {
|
||||
- kfree(bib);
|
||||
- return;
|
||||
+ bool done = false;
|
||||
+
|
||||
+ /* only free ib which have been emited */
|
||||
|
@ -89440,28 +89461,14 @@ index 49d5820..cc33b3d 100644
|
|||
+ done = true;
|
||||
+ }
|
||||
}
|
||||
+ return done;
|
||||
}
|
||||
|
||||
-void radeon_ib_bogus_add(struct radeon_device *rdev, struct radeon_ib *ib)
|
||||
-{
|
||||
- struct radeon_ib *bib;
|
||||
-
|
||||
- bib = kmalloc(sizeof(*bib), GFP_KERNEL);
|
||||
- if (bib == NULL)
|
||||
- return;
|
||||
- bib->ptr = vmalloc(ib->length_dw * 4);
|
||||
- if (bib->ptr == NULL) {
|
||||
- kfree(bib);
|
||||
- return;
|
||||
- }
|
||||
- memcpy(bib->ptr, ib->ptr, ib->length_dw * 4);
|
||||
- bib->length_dw = ib->length_dw;
|
||||
- mutex_lock(&rdev->ib_pool.mutex);
|
||||
- list_add_tail(&bib->list, &rdev->ib_pool.bogus_ib);
|
||||
- mutex_unlock(&rdev->ib_pool.mutex);
|
||||
-}
|
||||
-
|
||||
+ return done;
|
||||
}
|
||||
|
||||
-/*
|
||||
- * IB.
|
||||
- */
|
||||
|
@ -89579,7 +89586,7 @@ index 49d5820..cc33b3d 100644
|
|||
}
|
||||
|
||||
void radeon_ib_free(struct radeon_device *rdev, struct radeon_ib **ib)
|
||||
@@ -169,247 +172,258 @@ void radeon_ib_free(struct radeon_device *rdev, struct radeon_ib **ib)
|
||||
@@ -169,250 +172,261 @@ void radeon_ib_free(struct radeon_device *rdev, struct radeon_ib **ib)
|
||||
if (tmp == NULL) {
|
||||
return;
|
||||
}
|
||||
|
@ -89799,6 +89806,10 @@ index 49d5820..cc33b3d 100644
|
|||
{
|
||||
int r;
|
||||
|
||||
/* make sure we aren't trying to allocate more space than there is on the ring */
|
||||
- if (ndw > (rdev->cp.ring_size / 4))
|
||||
+ if (ndw > (ring->ring_size / 4))
|
||||
return -ENOMEM;
|
||||
/* Align requested size with padding so unlock_commit can
|
||||
* pad safely */
|
||||
- ndw = (ndw + rdev->cp.align_mask) & ~rdev->cp.align_mask;
|
||||
|
@ -89957,7 +89968,7 @@ index 49d5820..cc33b3d 100644
|
|||
|
||||
if (ring_obj) {
|
||||
r = radeon_bo_reserve(ring_obj, false);
|
||||
@@ -422,78 +436,96 @@ void radeon_ring_fini(struct radeon_device *rdev)
|
||||
@@ -425,78 +439,96 @@ void radeon_ring_fini(struct radeon_device *rdev)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -91197,19 +91208,20 @@ index 0b5468b..f493c64 100644
|
|||
#endif
|
||||
return 0;
|
||||
diff --git a/drivers/gpu/drm/radeon/reg_srcs/cayman b/drivers/gpu/drm/radeon/reg_srcs/cayman
|
||||
index 2316977..0f656b1 100644
|
||||
index 2316977..a072fa8 100644
|
||||
--- a/drivers/gpu/drm/radeon/reg_srcs/cayman
|
||||
+++ b/drivers/gpu/drm/radeon/reg_srcs/cayman
|
||||
@@ -1,5 +1,8 @@
|
||||
@@ -1,5 +1,9 @@
|
||||
cayman 0x9400
|
||||
0x0000802C GRBM_GFX_INDEX
|
||||
+0x00008040 WAIT_UNTIL
|
||||
+0x000084FC CP_STRMOUT_CNTL
|
||||
+0x000085F0 CP_COHER_CNTL
|
||||
+0x000085F4 CP_COHER_SIZE
|
||||
0x000088B0 VGT_VTX_VECT_EJECT_REG
|
||||
0x000088C4 VGT_CACHE_INVALIDATION
|
||||
0x000088D4 VGT_GS_VERTEX_REUSE
|
||||
@@ -77,7 +80,6 @@ cayman 0x9400
|
||||
@@ -77,7 +81,6 @@ cayman 0x9400
|
||||
0x0002802C DB_DEPTH_CLEAR
|
||||
0x00028030 PA_SC_SCREEN_SCISSOR_TL
|
||||
0x00028034 PA_SC_SCREEN_SCISSOR_BR
|
||||
|
@ -91217,7 +91229,7 @@ index 2316977..0f656b1 100644
|
|||
0x00028140 SQ_ALU_CONST_BUFFER_SIZE_PS_0
|
||||
0x00028144 SQ_ALU_CONST_BUFFER_SIZE_PS_1
|
||||
0x00028148 SQ_ALU_CONST_BUFFER_SIZE_PS_2
|
||||
@@ -206,7 +208,6 @@ cayman 0x9400
|
||||
@@ -206,7 +209,6 @@ cayman 0x9400
|
||||
0x00028344 PA_SC_VPORT_ZMAX_14
|
||||
0x00028348 PA_SC_VPORT_ZMIN_15
|
||||
0x0002834C PA_SC_VPORT_ZMAX_15
|
||||
|
@ -91225,7 +91237,7 @@ index 2316977..0f656b1 100644
|
|||
0x00028354 SX_SURFACE_SYNC
|
||||
0x0002835C SX_SCATTER_EXPORT_SIZE
|
||||
0x00028380 SQ_VTX_SEMANTIC_0
|
||||
@@ -508,10 +509,16 @@ cayman 0x9400
|
||||
@@ -508,10 +510,16 @@ cayman 0x9400
|
||||
0x00028AA8 IA_MULTI_VGT_PARAM
|
||||
0x00028AB4 VGT_REUSE_OFF
|
||||
0x00028AB8 VGT_VTX_CNT_EN
|
||||
|
@ -91243,7 +91255,7 @@ index 2316977..0f656b1 100644
|
|||
0x00028B38 VGT_GS_MAX_VERT_OUT
|
||||
0x00028B54 VGT_SHADER_STAGES_EN
|
||||
0x00028B58 VGT_LS_HS_CONFIG
|
||||
@@ -551,6 +558,18 @@ cayman 0x9400
|
||||
@@ -551,6 +559,18 @@ cayman 0x9400
|
||||
0x00028C34 PA_SC_AA_SAMPLE_LOCS_PIXEL_X1_Y1_3
|
||||
0x00028C38 PA_SC_AA_MASK_X0_Y0_X1_Y0
|
||||
0x00028C3C PA_SC_AA_MASK_X0_Y1_X1_Y1
|
||||
|
|
|
@ -1,69 +0,0 @@
|
|||
From: Matt Fleming <matt.fleming@intel.com>
|
||||
Date: Wed, 14 Nov 2012 09:42:35 +0000
|
||||
Subject: efi: Make 'efi_enabled' a function to query EFI facilities
|
||||
|
||||
commit 83e68189745ad931c2afd45d8ee3303929233e7f upstream.
|
||||
|
||||
Originally 'efi_enabled' indicated whether a kernel was booted from
|
||||
EFI firmware. Over time its semantics have changed, and it now
|
||||
indicates whether or not we are booted on an EFI machine with
|
||||
bit-native firmware, e.g. 64-bit kernel with 64-bit firmware.
|
||||
|
||||
The immediate motivation for this patch is the bug report at,
|
||||
|
||||
https://bugs.launchpad.net/ubuntu-cdimage/+bug/1040557
|
||||
|
||||
which details how running a platform driver on an EFI machine that is
|
||||
designed to run under BIOS can cause the machine to become
|
||||
bricked. Also, the following report,
|
||||
|
||||
https://bugzilla.kernel.org/show_bug.cgi?id=47121
|
||||
|
||||
details how running said driver can also cause Machine Check
|
||||
Exceptions. Drivers need a new means of detecting whether they're
|
||||
running on an EFI machine, as sadly the expression,
|
||||
|
||||
if (!efi_enabled)
|
||||
|
||||
hasn't been a sufficient condition for quite some time.
|
||||
|
||||
Users actually want to query 'efi_enabled' for different reasons -
|
||||
what they really want access to is the list of available EFI
|
||||
facilities.
|
||||
|
||||
For instance, the x86 reboot code needs to know whether it can invoke
|
||||
the ResetSystem() function provided by the EFI runtime services, while
|
||||
the ACPI OSL code wants to know whether the EFI config tables were
|
||||
mapped successfully. There are also checks in some of the platform
|
||||
driver code to simply see if they're running on an EFI machine (which
|
||||
would make it a bad idea to do BIOS-y things).
|
||||
|
||||
This patch is a prereq for the samsung-laptop fix patch.
|
||||
|
||||
Cc: David Airlie <airlied@linux.ie>
|
||||
Cc: Corentin Chary <corentincj@iksaif.net>
|
||||
Cc: Matthew Garrett <mjg59@srcf.ucam.org>
|
||||
Cc: Dave Jiang <dave.jiang@intel.com>
|
||||
Cc: Olof Johansson <olof@lixom.net>
|
||||
Cc: Peter Jones <pjones@redhat.com>
|
||||
Cc: Colin Ian King <colin.king@canonical.com>
|
||||
Cc: Steve Langasek <steve.langasek@canonical.com>
|
||||
Cc: Tony Luck <tony.luck@intel.com>
|
||||
Cc: Konrad Rzeszutek Wilk <konrad@kernel.org>
|
||||
Cc: Rafael J. Wysocki <rjw@sisk.pl>
|
||||
Signed-off-by: Matt Fleming <matt.fleming@intel.com>
|
||||
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
|
||||
[bwh: Restricted to drivers/gpu/drm/]
|
||||
---
|
||||
--- a/drivers/gpu/drm/radeon/radeon_device.c
|
||||
+++ b/drivers/gpu/drm/radeon/radeon_device.c
|
||||
@@ -429,7 +429,8 @@ bool radeon_card_posted(struct radeon_device *rdev)
|
||||
{
|
||||
uint32_t reg;
|
||||
|
||||
- if (efi_enabled && rdev->pdev->subsystem_vendor == PCI_VENDOR_ID_APPLE)
|
||||
+ if (efi_enabled(EFI_BOOT) &&
|
||||
+ rdev->pdev->subsystem_vendor == PCI_VENDOR_ID_APPLE)
|
||||
return false;
|
||||
|
||||
/* first check CRTCs */
|
|
@ -449,7 +449,6 @@ features/all/iguanair/0010-media-iguanair-do-not-modify-transmit-buffer.patch
|
|||
features/all/iguanair/0011-media-iguanair-cannot-send-data-from-the-stack.patch
|
||||
features/all/rt2800-add-chipset-revision-RT5390R-support.patch
|
||||
bugfix/all/fs-cachefiles-add-support-for-large-files-in-filesys.patch
|
||||
bugfix/all/bridge-Pull-ip-header-into-skb-data-before-looking-i.patch
|
||||
bugfix/all/ext4-rewrite-punch-hole-to-use-ext4_ext_remove_space.patch
|
||||
bugfix/all/ext4-fix-hole-punch-failure-when-depth-is-greater-th.patch
|
||||
bugfix/all/ext4-fix-kernel-BUG-on-large-scale-rm-rf-commands.patch
|
||||
|
@ -501,7 +500,6 @@ bugfix/x86/drm-i915-Only-increment-the-user-pin-count-after-suc.patch
|
|||
bugfix/x86/drm-i915-Disable-AsyncFlip-performance-optimisations.patch
|
||||
bugfix/x86/drm-i915-GFX_MODE-Flush-TLB-Invalidate-Mode-must-be-.patch
|
||||
bugfix/x86/drm-i915-dump-UTS_RELEASE-into-the-error_state.patch
|
||||
features/all/drm/efi-Make-efi_enabled-a-function-to-query-EFI-facilit.patch
|
||||
|
||||
# virtio-scsi from 3.7
|
||||
features/all/virtio_scsi/0001-SCSI-virtio-scsi-SCSI-driver-for-QEMU-based-virtual-.patch
|
||||
|
|
Loading…
Reference in New Issue