headers: install tools/objtool/objtool required for kbuild system (fixes virtualbox modules build) [release 4.14.13-2mamba;Sat Jan 13 2018]
This commit is contained in:
parent
b0b77815a7
commit
d0a6195eaa
@ -1,12 +0,0 @@
|
||||
diff -Nru kernel-2.6.19mamba.orig/sound/pci/hda/hda_generic.c kernel-2.6.19mamba/sound/pci/hda/hda_generic.c
|
||||
--- kernel-2.6.19mamba.orig/sound/pci/hda/hda_generic.c 2006-11-29 22:57:37.000000000 +0100
|
||||
+++ kernel-2.6.19mamba/sound/pci/hda/hda_generic.c 2007-01-02 17:32:42.000000000 +0100
|
||||
@@ -485,7 +485,7 @@
|
||||
return "Front Aux";
|
||||
return "Aux";
|
||||
case AC_JACK_MIC_IN:
|
||||
- if (node->pin_caps &
|
||||
+ if (pinctl && node->pin_caps &
|
||||
(AC_PINCAP_VREF_80 << AC_PINCAP_VREF_SHIFT))
|
||||
*pinctl |= AC_PINCTL_VREF_80;
|
||||
if ((location & 0x0f) == AC_JACK_LOC_FRONT)
|
@ -1,11 +0,0 @@
|
||||
diff -Nru kernel-2.6.19mamba.orig/drivers/video/vesafb-thread.c kernel-2.6.19mamba/drivers/video/vesafb-thread.c
|
||||
--- kernel-2.6.19mamba.orig/drivers/video/vesafb-thread.c 2006-12-05 15:52:43.000000000 +0100
|
||||
+++ kernel-2.6.19mamba/drivers/video/vesafb-thread.c 2006-12-05 15:55:24.000000000 +0100
|
||||
@@ -16,6 +16,7 @@
|
||||
#include <linux/delay.h>
|
||||
#include <linux/signal.h>
|
||||
#include <linux/suspend.h>
|
||||
+#include <linux/freezer.h>
|
||||
#include <linux/unistd.h>
|
||||
#include <video/vesa.h>
|
||||
#include <video/edid.h>
|
@ -1,22 +0,0 @@
|
||||
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
|
||||
--- a/drivers/pci/quirks.c
|
||||
+++ b/drivers/pci/quirks.c
|
||||
@@ -1751,6 +1751,7 @@ static void __init quirk_disable_all_msi(struct pci_dev *dev)
|
||||
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_SERVERWORKS, PCI_DEVICE_ID_SERVERWORKS_GCNB_LE, quirk_disable_all_msi);
|
||||
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_RS400_200, quirk_disable_all_msi);
|
||||
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_RS480, quirk_disable_all_msi);
|
||||
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_VT3351, quirk_disable_all_msi);
|
||||
|
||||
/* Disable MSI on chipsets that are known to not support it */
|
||||
static void __devinit quirk_disable_msi(struct pci_dev *dev)
|
||||
diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h
|
||||
--- a/include/linux/pci_ids.h
|
||||
+++ b/include/linux/pci_ids.h
|
||||
@@ -1287,6 +1287,7 @@
|
||||
#define PCI_DEVICE_ID_VIA_P4M800CE 0x0314
|
||||
#define PCI_DEVICE_ID_VIA_P4M890 0x0327
|
||||
#define PCI_DEVICE_ID_VIA_VT3336 0x0336
|
||||
+#define PCI_DEVICE_ID_VIA_VT3351 0x0351
|
||||
#define PCI_DEVICE_ID_VIA_8371_0 0x0391
|
||||
#define PCI_DEVICE_ID_VIA_8501_0 0x0501
|
||||
#define PCI_DEVICE_ID_VIA_82C561 0x0561
|
@ -1,21 +0,0 @@
|
||||
diff -Nru kernel-2.6.21mamba.orig/drivers/kvm/x86_emulate.c kernel-2.6.21mamba/drivers/kvm/x86_emulate.c
|
||||
--- kernel-2.6.21mamba.orig/drivers/kvm/x86_emulate.c 2007-04-26 05:08:32.000000000 +0200
|
||||
+++ kernel-2.6.21mamba/drivers/kvm/x86_emulate.c 2007-06-05 03:40:34.000000000 +0200
|
||||
@@ -152,7 +152,7 @@
|
||||
static u16 twobyte_table[256] = {
|
||||
/* 0x00 - 0x0F */
|
||||
0, SrcMem | ModRM | DstReg, 0, 0, 0, 0, ImplicitOps, 0,
|
||||
- 0, 0, 0, 0, 0, ImplicitOps | ModRM, 0, 0,
|
||||
+ 0, ImplicitOps, 0, 0, 0, ImplicitOps | ModRM, 0, 0,
|
||||
/* 0x10 - 0x1F */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, ImplicitOps | ModRM, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x20 - 0x2F */
|
||||
@@ -1303,6 +1303,8 @@
|
||||
/* Disable writeback. */
|
||||
dst.orig_val = dst.val;
|
||||
switch (b) {
|
||||
+ case 0x09: /* wbinvd */
|
||||
+ break;
|
||||
case 0x0d: /* GrpP (prefetch) */
|
||||
case 0x18: /* Grp16 (prefetch/nop) */
|
||||
break;
|
@ -1,26 +0,0 @@
|
||||
--- linux-2.6.orig/arch/powerpc/Kconfig 2007-03-19 11:47:27.422413925 +0100
|
||||
+++ linux-2.6/arch/powerpc/Kconfig 2007-03-19 11:47:37.512413925 +0100
|
||||
@@ -11,6 +11,11 @@ config PPC64
|
||||
This option selects whether a 32-bit or a 64-bit kernel
|
||||
will be built.
|
||||
|
||||
+config PPC_PM_NEEDS_RTC_LIB
|
||||
+ bool
|
||||
+ select RTC_LIB
|
||||
+ default y if PM
|
||||
+
|
||||
config PPC32
|
||||
bool
|
||||
default y if !PPC64
|
||||
--- linux-2.6.orig/arch/powerpc/sysdev/Makefile 2007-03-19 11:47:27.532413925 +0100
|
||||
+++ linux-2.6/arch/powerpc/sysdev/Makefile 2007-03-19 11:47:37.512413925 +0100
|
||||
@@ -14,6 +14,9 @@ obj-$(CONFIG_FSL_SOC) += fsl_soc.o
|
||||
obj-$(CONFIG_TSI108_BRIDGE) += tsi108_pci.o tsi108_dev.o
|
||||
obj-$(CONFIG_QUICC_ENGINE) += qe_lib/
|
||||
|
||||
+# contains only the suspend handler for time
|
||||
+obj-$(CONFIG_PM) += timer.o
|
||||
+
|
||||
ifeq ($(CONFIG_PPC_MERGE),y)
|
||||
obj-$(CONFIG_PPC_I8259) += i8259.o
|
||||
obj-$(CONFIG_PPC_83xx) += ipic.o
|
@ -1,10 +0,0 @@
|
||||
--- 1.53/arch/ppc/kernel/setup.c Thu Feb 19 05:42:24 2004
|
||||
+++ edited/arch/ppc/kernel/setup.c Wed Apr 28 14:27:12 2004
|
||||
@@ -83,6 +83,7 @@
|
||||
|
||||
#ifdef CONFIG_VGA_CONSOLE
|
||||
unsigned long vgacon_remap_base;
|
||||
+EXPORT_SYMBOL(vgacon_remap_base);
|
||||
#endif
|
||||
|
||||
struct machdep_calls ppc_md;
|
@ -1,10 +0,0 @@
|
||||
--- kernel-2.6.26mamba.orig/sound/pci/hda/patch_realtek.c 2008-09-14 18:32:30.000000000 +0200
|
||||
+++ kernel-2.6.26mamba/sound/pci/hda/patch_realtek.c 2008-09-14 18:35:32.000000000 +0200
|
||||
@@ -10516,6 +10516,7 @@
|
||||
SND_PCI_QUIRK(0x14c0, 0x0025, "COMPAL IFL90/JFL-92", ALC268_TOSHIBA),
|
||||
SND_PCI_QUIRK(0x152d, 0x0763, "Diverse (CPR2000)", ALC268_ACER),
|
||||
SND_PCI_QUIRK(0x152d, 0x0771, "Quanta IL1", ALC267_QUANTA_IL1),
|
||||
+ SND_PCI_QUIRK(0x14c0, 0x0026, "Compal (ZEPTO)", ALC268_ZEPTO),
|
||||
SND_PCI_QUIRK(0x1170, 0x0040, "ZEPTO", ALC268_ZEPTO),
|
||||
{}
|
||||
};
|
@ -1,13 +0,0 @@
|
||||
diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c
|
||||
index 1d7f49c..ccbd69b 100644
|
||||
--- a/net/ipv4/tcp.c
|
||||
+++ b/net/ipv4/tcp.c
|
||||
@@ -1532,7 +1532,7 @@ do_prequeue:
|
||||
}
|
||||
}
|
||||
}
|
||||
- if ((flags & MSG_PEEK) && peek_seq != tp->copied_seq) {
|
||||
+ if ((flags & MSG_PEEK) && (peek_seq - copied != tp->copied_seq)) {
|
||||
if (net_ratelimit())
|
||||
printk(KERN_DEBUG "TCP(%s:%d): Application bug, race in MSG_PEEK.\n",
|
||||
current->comm, task_pid_nr(current));
|
@ -1,80 +0,0 @@
|
||||
From 3d1c7b93431f07c10c22cd09ab6c676841c6c69b Mon Sep 17 00:00:00 2001
|
||||
From: Zhenyu Wang <zhenyuw@linux.intel.com>
|
||||
Date: Tue, 23 Feb 2010 13:58:40 +0800
|
||||
Subject: [PATCH] drm/i915: fix dependence for intel agp module
|
||||
|
||||
See http://bugzilla.kernel.org/show_bug.cgi?id=15021
|
||||
|
||||
This one trys to ensure the module dependence with drm/i915
|
||||
on intel_agp module by using a exported symbol. Because intel_agp
|
||||
is a subdriver for agp, so the required dependence isn't built
|
||||
with i915 subdriver for drm. I hope this is not too strange..
|
||||
|
||||
Signed-off-by: Zhenyu Wang <zhenyuw@linux.intel.com>
|
||||
---
|
||||
drivers/char/agp/intel-agp.c | 10 ++++++++--
|
||||
drivers/gpu/drm/i915/i915_drv.c | 6 ++++++
|
||||
2 files changed, 14 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/drivers/char/agp/intel-agp.c b/drivers/char/agp/intel-agp.c
|
||||
index e5ffefe..c921ee2 100644
|
||||
--- a/drivers/char/agp/intel-agp.c
|
||||
+++ b/drivers/char/agp/intel-agp.c
|
||||
@@ -10,6 +10,9 @@
|
||||
#include <linux/agp_backend.h>
|
||||
#include "agp.h"
|
||||
|
||||
+int intel_agp_enabled;
|
||||
+EXPORT_SYMBOL(intel_agp_enabled);
|
||||
+
|
||||
/*
|
||||
* If we have Intel graphics, we're not going to have anything other than
|
||||
* an Intel IOMMU. So make the correct use of the PCI DMA API contingent
|
||||
@@ -2378,7 +2381,7 @@ static int __devinit agp_intel_probe(struct pci_dev *pdev,
|
||||
struct agp_bridge_data *bridge;
|
||||
u8 cap_ptr = 0;
|
||||
struct resource *r;
|
||||
- int i;
|
||||
+ int i, err;
|
||||
|
||||
cap_ptr = pci_find_capability(pdev, PCI_CAP_ID_AGP);
|
||||
|
||||
@@ -2470,7 +2473,10 @@ static int __devinit agp_intel_probe(struct pci_dev *pdev,
|
||||
}
|
||||
|
||||
pci_set_drvdata(pdev, bridge);
|
||||
- return agp_add_bridge(bridge);
|
||||
+ err = agp_add_bridge(bridge);
|
||||
+ if (!err)
|
||||
+ intel_agp_enabled = 1;
|
||||
+ return err;
|
||||
}
|
||||
|
||||
static void __devexit agp_intel_remove(struct pci_dev *pdev)
|
||||
diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
|
||||
index cf4cb3e..48ae2c2 100644
|
||||
--- a/drivers/gpu/drm/i915/i915_drv.c
|
||||
+++ b/drivers/gpu/drm/i915/i915_drv.c
|
||||
@@ -49,6 +49,7 @@ unsigned int i915_lvds_downclock = 0;
|
||||
module_param_named(lvds_downclock, i915_lvds_downclock, int, 0400);
|
||||
|
||||
static struct drm_driver driver;
|
||||
+extern int intel_agp_enabled;
|
||||
|
||||
#define INTEL_VGA_DEVICE(id, info) { \
|
||||
.class = PCI_CLASS_DISPLAY_VGA << 8, \
|
||||
@@ -546,6 +547,11 @@ static struct drm_driver driver = {
|
||||
|
||||
static int __init i915_init(void)
|
||||
{
|
||||
+ if (!intel_agp_enabled) {
|
||||
+ DRM_ERROR("drm/i915 can't work without intel_agp module!\n");
|
||||
+ return -ENODEV;
|
||||
+ }
|
||||
+
|
||||
driver.num_ioctls = i915_max_ioctl;
|
||||
|
||||
i915_gem_shrinker_init();
|
||||
--
|
||||
1.6.3.3
|
||||
|
@ -1,21 +0,0 @@
|
||||
--- kernel-2.6.33mamba/drivers/char/tpm/tpm.c.orig 2010-09-29 22:17:07.000000000 +0200
|
||||
+++ kernel-2.6.33mamba/drivers/char/tpm/tpm.c 2010-09-29 22:22:55.000000000 +0200
|
||||
@@ -353,12 +353,14 @@ unsigned long tpm_calc_ordinal_duration(
|
||||
tpm_protected_ordinal_duration[ordinal &
|
||||
TPM_PROTECTED_ORDINAL_MASK];
|
||||
|
||||
- if (duration_idx != TPM_UNDEFINED)
|
||||
+ if (duration_idx != TPM_UNDEFINED) {
|
||||
duration = chip->vendor.duration[duration_idx];
|
||||
- if (duration <= 0)
|
||||
+ /* if duration is 0, it's because chip->vendor.duration wasn't */
|
||||
+ /* filled yet, so we set the lowest timeout just to give enough */
|
||||
+ /* time to tpm_get_timeouts() succeed */
|
||||
+ return (duration <= 0 ? HZ : duration);
|
||||
+ } else
|
||||
return 2 * 60 * HZ;
|
||||
- else
|
||||
- return duration;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(tpm_calc_ordinal_duration);
|
||||
|
@ -1,28 +0,0 @@
|
||||
diff -Nru kernel-2.6.33mamba.orig//drivers/usb/serial/ftdi_sio.c kernel-2.6.33mamba/drivers/usb/serial/ftdi_sio.c
|
||||
--- kernel-2.6.33mamba.orig//drivers/usb/serial/ftdi_sio.c 2010-09-29 13:08:53.454057663 +0200
|
||||
+++ kernel-2.6.33mamba/drivers/usb/serial/ftdi_sio.c 2010-09-29 13:18:30.229054171 +0200
|
||||
@@ -150,6 +150,8 @@
|
||||
* /sys/bus/usb/ftdi_sio/new_id, then send patch/report!
|
||||
*/
|
||||
static struct usb_device_id id_table_combined [] = {
|
||||
+ { USB_DEVICE(FTDI_VID, FTDI_CTI_Mini_PID) },
|
||||
+ { USB_DEVICE(FTDI_VID, FTDI_CTI_Nano_PID) },
|
||||
{ USB_DEVICE(FTDI_VID, FTDI_AMC232_PID) },
|
||||
{ USB_DEVICE(FTDI_VID, FTDI_CANUSB_PID) },
|
||||
{ USB_DEVICE(FTDI_VID, FTDI_CANDAPTER_PID) },
|
||||
diff -Nru kernel-2.6.33mamba.orig//drivers/usb/serial/ftdi_sio_ids.h kernel-2.6.33mamba/drivers/usb/serial/ftdi_sio_ids.h
|
||||
--- kernel-2.6.33mamba.orig//drivers/usb/serial/ftdi_sio_ids.h 2010-09-29 13:08:53.457119450 +0200
|
||||
+++ kernel-2.6.33mamba/drivers/usb/serial/ftdi_sio_ids.h 2010-09-29 13:17:28.902429141 +0200
|
||||
@@ -1085,6 +1085,12 @@
|
||||
#define XVERVE_SIGNALYZER_SH4_PID 0xBCA4
|
||||
|
||||
/*
|
||||
+ * CTI GmbH USB to RS485 converters (http://www.cti-lean.com)
|
||||
+ */
|
||||
+#define FTDI_CTI_Mini_PID 0xF608 /* USB-485-Mini der Firma CTI*/
|
||||
+#define FTDI_CTI_Nano_PID 0xF60B /* USB-Nano-485 def Firma CTI*/
|
||||
+
|
||||
+/*
|
||||
* Segway Robotic Mobility Platform USB interface (using VID 0x0403)
|
||||
* Submitted by John G. Rogers
|
||||
*/
|
@ -1,854 +0,0 @@
|
||||
commit 4adf332cc24ee2d46064aaafd8216169d29566d5
|
||||
Author: Alex Deucher <alexdeucher@gmail.com>
|
||||
Date: Sun Nov 14 20:24:35 2010 -0500
|
||||
|
||||
drm/radeon/kms: fix and unify tiled buffer alignment checking for r6xx/7xx
|
||||
|
||||
Tiled buffers have the same alignment requirements regardless of
|
||||
whether the surface is for db, cb, or textures. Previously, the
|
||||
calculations where inconsistent for each buffer type.
|
||||
|
||||
- Unify the alignment calculations in a common function
|
||||
- Standardize the alignment units (pixels for pitch/height/depth,
|
||||
bytes for base)
|
||||
- properly check the buffer base alignments
|
||||
|
||||
Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
|
||||
Signed-off-by: Dave Airlie <airlied@redhat.com>
|
||||
|
||||
commit c37cb9e61dce7437f63280d9347a9ffdf4ec34e7
|
||||
Author: Alex Deucher <alexdeucher@gmail.com>
|
||||
Date: Wed Oct 27 01:44:35 2010 -0400
|
||||
|
||||
drm/radeon/kms: fix tiled db height calculation on 6xx/7xx
|
||||
|
||||
Calculate height based on the slice bitfield rather than the size.
|
||||
Same as Dave's CB fix.
|
||||
|
||||
Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
|
||||
Signed-off-by: Dave Airlie <airlied@redhat.com>
|
||||
|
||||
commit b80c8fdc2fadd8182b958e91a10f2fa287f993e4
|
||||
Author: Alex Deucher <alexdeucher@gmail.com>
|
||||
Date: Tue Oct 26 20:22:42 2010 -0400
|
||||
|
||||
drm/radeon/kms: fix r6xx/7xx 1D tiling CS checker v2
|
||||
|
||||
broken by:
|
||||
drm/radeon/r600: fix tiling issues in CS checker.
|
||||
|
||||
v2: only apply it to 1D tiling case.
|
||||
|
||||
Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
|
||||
Signed-off-by: Dave Airlie <airlied@redhat.com>
|
||||
|
||||
commit 4336ac5c0a4e5dfbb51631ad680d6a5d0b295cd3
|
||||
Author: Alex Deucher <alexdeucher@gmail.com>
|
||||
Date: Mon Oct 18 23:45:39 2010 -0400
|
||||
|
||||
drm/radeon/kms: fix 2D tile height alignment in the r600 CS checker
|
||||
|
||||
macro tile heights are aligned to num channels, not num banks.
|
||||
|
||||
Noticed by Dave Airlie.
|
||||
|
||||
Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
|
||||
Cc: stable@kernel.org
|
||||
Signed-off-by: Dave Airlie <airlied@redhat.com>
|
||||
|
||||
commit 5c76976a1419a633f9f33c6547bae00348b855d2
|
||||
Author: Dave Airlie <airlied@redhat.com>
|
||||
Date: Thu Oct 21 13:55:40 2010 +1000
|
||||
|
||||
drm/radeon/r600: fix tiling issues in CS checker.
|
||||
|
||||
The CS checker had some incorrect alignment requirements for 2D surfaces,
|
||||
this made rendering to mipmap levels that were 2D broken.
|
||||
|
||||
Also the CB height was being worked out from the BO size, this doesn't work
|
||||
at all when rendering mipmap levels, instead we work out what height userspace
|
||||
wanted from slice max and use that to check it fits inside the BO, however
|
||||
the DDX send the wrong slice max for an unaligned buffer so we have to workaround
|
||||
for that even though its a userspace bug.
|
||||
|
||||
Reviewed-by: Alex Deucher <alexdeucher@gmail.com>
|
||||
Signed-off-by: Dave Airlie <airlied@redhat.com>
|
||||
|
||||
commit fa479e9df4558af6f091c45be37f713e64b836a1
|
||||
Author: Alex Deucher <alexdeucher@gmail.com>
|
||||
Date: Tue Sep 14 10:10:47 2010 -0400
|
||||
|
||||
drm/radeon/kms: only warn on mipmap size checks in r600 cs checker (v2)
|
||||
|
||||
The texture base address registers are in units of 256 bytes.
|
||||
The original CS checker treated these offsets as bytes, so the
|
||||
original check was wrong. I fixed the units in a patch during
|
||||
the 2.6.36 cycle, but this ended up breaking some existing
|
||||
userspace (probably due to a bug in either userspace texture allocation
|
||||
or the drm texture mipmap checker). So for now, until we come
|
||||
up with a better fix, just warn if the mipmap size it too large.
|
||||
This will keep existing userspace working and it should be just
|
||||
as safe as before when we were checking the wrong units. These
|
||||
are GPU MC addresses, so if they fall outside of the VRAM or
|
||||
GART apertures, they end up at the GPU default page, so this should
|
||||
be safe from a security perspective.
|
||||
|
||||
v2: Just disable the warning. It just spams the log and there's
|
||||
nothing the user can do about it.
|
||||
|
||||
Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
|
||||
Cc: Jerome Glisse <glisse@freedesktop.org>
|
||||
Signed-off-by: Dave Airlie <airlied@redhat.com>
|
||||
|
||||
commit 6e8df81d43d5c95fe37db7f0ef55332de1a4b698
|
||||
Author: Dave Airlie <airlied@redhat.com>
|
||||
Date: Thu Aug 12 09:40:05 2010 +1000
|
||||
|
||||
drm/radeon: drop old and broken mesa warning
|
||||
|
||||
This never really got fixed in mesa, and the kernel deals with the problem
|
||||
just fine, so don't got reporting things that confuse people.
|
||||
|
||||
Signed-off-by: Dave Airlie <airlied@redhat.com>
|
||||
|
||||
commit 23f012fb9a0633f2f8901440e314d6276255b1c0
|
||||
Author: Alex Deucher <alexdeucher@gmail.com>
|
||||
Date: Wed Aug 11 11:54:25 2010 -0400
|
||||
|
||||
drm/radeon/kms: another r6xx/r7xx CS checker fix
|
||||
|
||||
add default case for buffer formats
|
||||
|
||||
Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
|
||||
Cc: Andre Maasikas <amaasikas@gmail.com>
|
||||
Signed-off-by: Dave Airlie <airlied@redhat.com>
|
||||
|
||||
commit 2c7e76decda2d437f0ca064fef1a2d5d8892288e
|
||||
Author: Alex Deucher <alexdeucher@gmail.com>
|
||||
Date: Fri Aug 6 02:54:05 2010 -0400
|
||||
|
||||
drm/radeon/kms: r600 CS parser fixes
|
||||
|
||||
- buffer offsets in the base regs are 256b aligned so
|
||||
shift properly when comparing, fixed by Andre Maasikas
|
||||
- mipmap size was calculated wrong when nlevel=0
|
||||
- texture bo offsets were used after the bo base address was added
|
||||
- vertex resource size register is size - 1, not size
|
||||
|
||||
Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
|
||||
Cc: Andre Maasikas <amaasikas@gmail.com>
|
||||
Signed-off-by: Dave Airlie <airlied@redhat.com>
|
||||
|
||||
commit 85d1363c9f15b5d4303b635142cee0ba9d1473fc
|
||||
Author: Alex Deucher <alexdeucher@gmail.com>
|
||||
Date: Fri Jun 4 18:41:42 2010 -0400
|
||||
|
||||
drm/radeon/kms: fix CS alignment checking for tiling (v2)
|
||||
|
||||
Covers depth, cb, and textures. Hopefully I got this right.
|
||||
|
||||
v2: - fix bugs:
|
||||
https://bugs.freedesktop.org/show_bug.cgi?id=28327
|
||||
https://bugs.freedesktop.org/show_bug.cgi?id=28381
|
||||
- use ALIGNED(), IS_ALIGNED() macros
|
||||
|
||||
Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
|
||||
Signed-off-by: Dave Airlie <airlied@redhat.com>
|
||||
|
||||
commit b956b6e7c7fb207daf32520c0a72c8c06ef1d5f5
|
||||
Author: Alex Deucher <alexdeucher@gmail.com>
|
||||
Date: Thu May 20 12:43:52 2010 -0400
|
||||
|
||||
drm/radeon/kms: add tiling support to the cs checker for r6xx/r7xx
|
||||
|
||||
Check for relocs for DB_DEPTH_INFO, CB_COLOR*_INFO, and texture
|
||||
resources.
|
||||
|
||||
Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
|
||||
Signed-off-by: Dave Airlie <airlied@redhat.com>
|
||||
|
||||
drivers/gpu/drm/radeon/r600_cs.c | 391 ++++++++++++++++++++++++++++++--------
|
||||
drivers/gpu/drm/radeon/r600d.h | 12 ++
|
||||
2 files changed, 324 insertions(+), 79 deletions(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/radeon/r600_cs.c b/drivers/gpu/drm/radeon/r600_cs.c
|
||||
index 144c32d..0f90fc3 100644
|
||||
--- a/drivers/gpu/drm/radeon/r600_cs.c
|
||||
+++ b/drivers/gpu/drm/radeon/r600_cs.c
|
||||
@@ -25,6 +25,7 @@
|
||||
* Alex Deucher
|
||||
* Jerome Glisse
|
||||
*/
|
||||
+#include <linux/kernel.h>
|
||||
#include "drmP.h"
|
||||
#include "radeon.h"
|
||||
#include "r600d.h"
|
||||
@@ -49,6 +50,7 @@ struct r600_cs_track {
|
||||
u32 nsamples;
|
||||
u32 cb_color_base_last[8];
|
||||
struct radeon_bo *cb_color_bo[8];
|
||||
+ u64 cb_color_bo_mc[8];
|
||||
u32 cb_color_bo_offset[8];
|
||||
struct radeon_bo *cb_color_frag_bo[8];
|
||||
struct radeon_bo *cb_color_tile_bo[8];
|
||||
@@ -66,6 +68,7 @@ struct r600_cs_track {
|
||||
u32 db_depth_size;
|
||||
u32 db_offset;
|
||||
struct radeon_bo *db_bo;
|
||||
+ u64 db_bo_mc;
|
||||
};
|
||||
|
||||
static inline int r600_bpe_from_format(u32 *bpe, u32 format)
|
||||
@@ -132,12 +135,75 @@ static inline int r600_bpe_from_format(u32 *bpe, u32 format)
|
||||
case V_038004_FMT_GB_GR:
|
||||
case V_038004_FMT_BG_RG:
|
||||
case V_038004_COLOR_INVALID:
|
||||
+ default:
|
||||
*bpe = 16;
|
||||
return -EINVAL;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
+struct array_mode_checker {
|
||||
+ int array_mode;
|
||||
+ u32 group_size;
|
||||
+ u32 nbanks;
|
||||
+ u32 npipes;
|
||||
+ u32 nsamples;
|
||||
+ u32 bpe;
|
||||
+};
|
||||
+
|
||||
+/* returns alignment in pixels for pitch/height/depth and bytes for base */
|
||||
+static inline int r600_get_array_mode_alignment(struct array_mode_checker *values,
|
||||
+ u32 *pitch_align,
|
||||
+ u32 *height_align,
|
||||
+ u32 *depth_align,
|
||||
+ u64 *base_align)
|
||||
+{
|
||||
+ u32 tile_width = 8;
|
||||
+ u32 tile_height = 8;
|
||||
+ u32 macro_tile_width = values->nbanks;
|
||||
+ u32 macro_tile_height = values->npipes;
|
||||
+ u32 tile_bytes = tile_width * tile_height * values->bpe * values->nsamples;
|
||||
+ u32 macro_tile_bytes = macro_tile_width * macro_tile_height * tile_bytes;
|
||||
+
|
||||
+ switch (values->array_mode) {
|
||||
+ case ARRAY_LINEAR_GENERAL:
|
||||
+ /* technically tile_width/_height for pitch/height */
|
||||
+ *pitch_align = 1; /* tile_width */
|
||||
+ *height_align = 1; /* tile_height */
|
||||
+ *depth_align = 1;
|
||||
+ *base_align = 1;
|
||||
+ break;
|
||||
+ case ARRAY_LINEAR_ALIGNED:
|
||||
+ *pitch_align = max((u32)64, (u32)(values->group_size / values->bpe));
|
||||
+ *height_align = tile_height;
|
||||
+ *depth_align = 1;
|
||||
+ *base_align = values->group_size;
|
||||
+ break;
|
||||
+ case ARRAY_1D_TILED_THIN1:
|
||||
+ *pitch_align = max((u32)tile_width,
|
||||
+ (u32)(values->group_size /
|
||||
+ (tile_height * values->bpe * values->nsamples)));
|
||||
+ *height_align = tile_height;
|
||||
+ *depth_align = 1;
|
||||
+ *base_align = values->group_size;
|
||||
+ break;
|
||||
+ case ARRAY_2D_TILED_THIN1:
|
||||
+ *pitch_align = max((u32)macro_tile_width,
|
||||
+ (u32)(((values->group_size / tile_height) /
|
||||
+ (values->bpe * values->nsamples)) *
|
||||
+ values->nbanks)) * tile_width;
|
||||
+ *height_align = macro_tile_height * tile_height;
|
||||
+ *depth_align = 1;
|
||||
+ *base_align = max(macro_tile_bytes,
|
||||
+ (*pitch_align) * values->bpe * (*height_align) * values->nsamples);
|
||||
+ break;
|
||||
+ default:
|
||||
+ return -EINVAL;
|
||||
+ }
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
static void r600_cs_track_init(struct r600_cs_track *track)
|
||||
{
|
||||
int i;
|
||||
@@ -151,10 +217,12 @@ static void r600_cs_track_init(struct r600_cs_track *track)
|
||||
track->cb_color_info[i] = 0;
|
||||
track->cb_color_bo[i] = NULL;
|
||||
track->cb_color_bo_offset[i] = 0xFFFFFFFF;
|
||||
+ track->cb_color_bo_mc[i] = 0xFFFFFFFF;
|
||||
}
|
||||
track->cb_target_mask = 0xFFFFFFFF;
|
||||
track->cb_shader_mask = 0xFFFFFFFF;
|
||||
track->db_bo = NULL;
|
||||
+ track->db_bo_mc = 0xFFFFFFFF;
|
||||
/* assume the biggest format and that htile is enabled */
|
||||
track->db_depth_info = 7 | (1 << 25);
|
||||
track->db_depth_view = 0xFFFFC000;
|
||||
@@ -166,70 +234,58 @@ static void r600_cs_track_init(struct r600_cs_track *track)
|
||||
static inline int r600_cs_track_validate_cb(struct radeon_cs_parser *p, int i)
|
||||
{
|
||||
struct r600_cs_track *track = p->track;
|
||||
- u32 bpe = 0, pitch, slice_tile_max, size, tmp, height;
|
||||
+ u32 bpe = 0, slice_tile_max, size, tmp;
|
||||
+ u32 height, height_align, pitch, pitch_align, depth_align;
|
||||
+ u64 base_offset, base_align;
|
||||
+ struct array_mode_checker array_check;
|
||||
volatile u32 *ib = p->ib->ptr;
|
||||
+ unsigned array_mode;
|
||||
|
||||
if (G_0280A0_TILE_MODE(track->cb_color_info[i])) {
|
||||
dev_warn(p->dev, "FMASK or CMASK buffer are not supported by this kernel\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
- size = radeon_bo_size(track->cb_color_bo[i]);
|
||||
+ size = radeon_bo_size(track->cb_color_bo[i]) - track->cb_color_bo_offset[i];
|
||||
if (r600_bpe_from_format(&bpe, G_0280A0_FORMAT(track->cb_color_info[i]))) {
|
||||
dev_warn(p->dev, "%s:%d cb invalid format %d for %d (0x%08X)\n",
|
||||
__func__, __LINE__, G_0280A0_FORMAT(track->cb_color_info[i]),
|
||||
i, track->cb_color_info[i]);
|
||||
return -EINVAL;
|
||||
}
|
||||
- pitch = (G_028060_PITCH_TILE_MAX(track->cb_color_size[i]) + 1) << 3;
|
||||
+ /* pitch in pixels */
|
||||
+ pitch = (G_028060_PITCH_TILE_MAX(track->cb_color_size[i]) + 1) * 8;
|
||||
slice_tile_max = G_028060_SLICE_TILE_MAX(track->cb_color_size[i]) + 1;
|
||||
- if (!pitch) {
|
||||
- dev_warn(p->dev, "%s:%d cb pitch (%d) for %d invalid (0x%08X)\n",
|
||||
- __func__, __LINE__, pitch, i, track->cb_color_size[i]);
|
||||
- return -EINVAL;
|
||||
- }
|
||||
- height = size / (pitch * bpe);
|
||||
+ slice_tile_max *= 64;
|
||||
+ height = slice_tile_max / pitch;
|
||||
if (height > 8192)
|
||||
height = 8192;
|
||||
- switch (G_0280A0_ARRAY_MODE(track->cb_color_info[i])) {
|
||||
+ array_mode = G_0280A0_ARRAY_MODE(track->cb_color_info[i]);
|
||||
+
|
||||
+ base_offset = track->cb_color_bo_mc[i] + track->cb_color_bo_offset[i];
|
||||
+ array_check.array_mode = array_mode;
|
||||
+ array_check.group_size = track->group_size;
|
||||
+ array_check.nbanks = track->nbanks;
|
||||
+ array_check.npipes = track->npipes;
|
||||
+ array_check.nsamples = track->nsamples;
|
||||
+ array_check.bpe = bpe;
|
||||
+ if (r600_get_array_mode_alignment(&array_check,
|
||||
+ &pitch_align, &height_align, &depth_align, &base_align)) {
|
||||
+ dev_warn(p->dev, "%s invalid tiling %d for %d (0x%08X)\n", __func__,
|
||||
+ G_0280A0_ARRAY_MODE(track->cb_color_info[i]), i,
|
||||
+ track->cb_color_info[i]);
|
||||
+ return -EINVAL;
|
||||
+ }
|
||||
+ switch (array_mode) {
|
||||
case V_0280A0_ARRAY_LINEAR_GENERAL:
|
||||
+ break;
|
||||
case V_0280A0_ARRAY_LINEAR_ALIGNED:
|
||||
- if (pitch & 0x3f) {
|
||||
- dev_warn(p->dev, "%s:%d cb pitch (%d x %d = %d) invalid\n",
|
||||
- __func__, __LINE__, pitch, bpe, pitch * bpe);
|
||||
- return -EINVAL;
|
||||
- }
|
||||
- if ((pitch * bpe) & (track->group_size - 1)) {
|
||||
- dev_warn(p->dev, "%s:%d cb pitch (%d) invalid\n",
|
||||
- __func__, __LINE__, pitch);
|
||||
- return -EINVAL;
|
||||
- }
|
||||
break;
|
||||
case V_0280A0_ARRAY_1D_TILED_THIN1:
|
||||
- if ((pitch * 8 * bpe * track->nsamples) & (track->group_size - 1)) {
|
||||
- dev_warn(p->dev, "%s:%d cb pitch (%d) invalid\n",
|
||||
- __func__, __LINE__, pitch);
|
||||
- return -EINVAL;
|
||||
- }
|
||||
- height &= ~0x7;
|
||||
- if (!height)
|
||||
- height = 8;
|
||||
+ /* avoid breaking userspace */
|
||||
+ if (height > 7)
|
||||
+ height &= ~0x7;
|
||||
break;
|
||||
case V_0280A0_ARRAY_2D_TILED_THIN1:
|
||||
- if (pitch & ((8 * track->nbanks) - 1)) {
|
||||
- dev_warn(p->dev, "%s:%d cb pitch (%d) invalid\n",
|
||||
- __func__, __LINE__, pitch);
|
||||
- return -EINVAL;
|
||||
- }
|
||||
- tmp = pitch * 8 * bpe * track->nsamples;
|
||||
- tmp = tmp / track->nbanks;
|
||||
- if (tmp & (track->group_size - 1)) {
|
||||
- dev_warn(p->dev, "%s:%d cb pitch (%d) invalid\n",
|
||||
- __func__, __LINE__, pitch);
|
||||
- return -EINVAL;
|
||||
- }
|
||||
- height &= ~((16 * track->npipes) - 1);
|
||||
- if (!height)
|
||||
- height = 16 * track->npipes;
|
||||
break;
|
||||
default:
|
||||
dev_warn(p->dev, "%s invalid tiling %d for %d (0x%08X)\n", __func__,
|
||||
@@ -237,17 +293,43 @@ static inline int r600_cs_track_validate_cb(struct radeon_cs_parser *p, int i)
|
||||
track->cb_color_info[i]);
|
||||
return -EINVAL;
|
||||
}
|
||||
+
|
||||
+ if (!IS_ALIGNED(pitch, pitch_align)) {
|
||||
+ dev_warn(p->dev, "%s:%d cb pitch (%d) invalid\n",
|
||||
+ __func__, __LINE__, pitch);
|
||||
+ return -EINVAL;
|
||||
+ }
|
||||
+ if (!IS_ALIGNED(height, height_align)) {
|
||||
+ dev_warn(p->dev, "%s:%d cb height (%d) invalid\n",
|
||||
+ __func__, __LINE__, height);
|
||||
+ return -EINVAL;
|
||||
+ }
|
||||
+ if (!IS_ALIGNED(base_offset, base_align)) {
|
||||
+ dev_warn(p->dev, "%s offset[%d] 0x%llx not aligned\n", __func__, i, base_offset);
|
||||
+ return -EINVAL;
|
||||
+ }
|
||||
+
|
||||
/* check offset */
|
||||
- tmp = height * pitch;
|
||||
+ tmp = height * pitch * bpe;
|
||||
if ((tmp + track->cb_color_bo_offset[i]) > radeon_bo_size(track->cb_color_bo[i])) {
|
||||
- dev_warn(p->dev, "%s offset[%d] %d to big\n", __func__, i, track->cb_color_bo_offset[i]);
|
||||
- return -EINVAL;
|
||||
+ if (array_mode == V_0280A0_ARRAY_LINEAR_GENERAL) {
|
||||
+ /* the initial DDX does bad things with the CB size occasionally */
|
||||
+ /* it rounds up height too far for slice tile max but the BO is smaller */
|
||||
+ tmp = (height - 7) * 8 * bpe;
|
||||
+ if ((tmp + track->cb_color_bo_offset[i]) > radeon_bo_size(track->cb_color_bo[i])) {
|
||||
+ dev_warn(p->dev, "%s offset[%d] %d %d %lu too big\n", __func__, i, track->cb_color_bo_offset[i], tmp, radeon_bo_size(track->cb_color_bo[i]));
|
||||
+ return -EINVAL;
|
||||
+ }
|
||||
+ } else {
|
||||
+ dev_warn(p->dev, "%s offset[%d] %d %d %lu too big\n", __func__, i, track->cb_color_bo_offset[i], tmp, radeon_bo_size(track->cb_color_bo[i]));
|
||||
+ return -EINVAL;
|
||||
+ }
|
||||
}
|
||||
/* limit max tile */
|
||||
tmp = (height * pitch) >> 6;
|
||||
if (tmp < slice_tile_max)
|
||||
slice_tile_max = tmp;
|
||||
- tmp = S_028060_PITCH_TILE_MAX((pitch >> 3) - 1) |
|
||||
+ tmp = S_028060_PITCH_TILE_MAX((pitch / 8) - 1) |
|
||||
S_028060_SLICE_TILE_MAX(slice_tile_max - 1);
|
||||
ib[track->cb_color_size_idx[i]] = tmp;
|
||||
return 0;
|
||||
@@ -289,7 +371,12 @@ static int r600_cs_track_check(struct radeon_cs_parser *p)
|
||||
/* Check depth buffer */
|
||||
if (G_028800_STENCIL_ENABLE(track->db_depth_control) ||
|
||||
G_028800_Z_ENABLE(track->db_depth_control)) {
|
||||
- u32 nviews, bpe, ntiles;
|
||||
+ u32 nviews, bpe, ntiles, size, slice_tile_max;
|
||||
+ u32 height, height_align, pitch, pitch_align, depth_align;
|
||||
+ u64 base_offset, base_align;
|
||||
+ struct array_mode_checker array_check;
|
||||
+ int array_mode;
|
||||
+
|
||||
if (track->db_bo == NULL) {
|
||||
dev_warn(p->dev, "z/stencil with no depth buffer\n");
|
||||
return -EINVAL;
|
||||
@@ -321,7 +408,6 @@ static int r600_cs_track_check(struct radeon_cs_parser *p)
|
||||
dev_warn(p->dev, "z/stencil buffer size not set\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
- printk_once(KERN_WARNING "You have old & broken userspace please consider updating mesa\n");
|
||||
tmp = radeon_bo_size(track->db_bo) - track->db_offset;
|
||||
tmp = (tmp / bpe) >> 6;
|
||||
if (!tmp) {
|
||||
@@ -332,11 +418,63 @@ static int r600_cs_track_check(struct radeon_cs_parser *p)
|
||||
}
|
||||
ib[track->db_depth_size_idx] = S_028000_SLICE_TILE_MAX(tmp - 1) | (track->db_depth_size & 0x3FF);
|
||||
} else {
|
||||
+ size = radeon_bo_size(track->db_bo);
|
||||
+ /* pitch in pixels */
|
||||
+ pitch = (G_028000_PITCH_TILE_MAX(track->db_depth_size) + 1) * 8;
|
||||
+ slice_tile_max = G_028000_SLICE_TILE_MAX(track->db_depth_size) + 1;
|
||||
+ slice_tile_max *= 64;
|
||||
+ height = slice_tile_max / pitch;
|
||||
+ if (height > 8192)
|
||||
+ height = 8192;
|
||||
+ base_offset = track->db_bo_mc + track->db_offset;
|
||||
+ array_mode = G_028010_ARRAY_MODE(track->db_depth_info);
|
||||
+ array_check.array_mode = array_mode;
|
||||
+ array_check.group_size = track->group_size;
|
||||
+ array_check.nbanks = track->nbanks;
|
||||
+ array_check.npipes = track->npipes;
|
||||
+ array_check.nsamples = track->nsamples;
|
||||
+ array_check.bpe = bpe;
|
||||
+ if (r600_get_array_mode_alignment(&array_check,
|
||||
+ &pitch_align, &height_align, &depth_align, &base_align)) {
|
||||
+ dev_warn(p->dev, "%s invalid tiling %d (0x%08X)\n", __func__,
|
||||
+ G_028010_ARRAY_MODE(track->db_depth_info),
|
||||
+ track->db_depth_info);
|
||||
+ return -EINVAL;
|
||||
+ }
|
||||
+ switch (array_mode) {
|
||||
+ case V_028010_ARRAY_1D_TILED_THIN1:
|
||||
+ /* don't break userspace */
|
||||
+ height &= ~0x7;
|
||||
+ break;
|
||||
+ case V_028010_ARRAY_2D_TILED_THIN1:
|
||||
+ break;
|
||||
+ default:
|
||||
+ dev_warn(p->dev, "%s invalid tiling %d (0x%08X)\n", __func__,
|
||||
+ G_028010_ARRAY_MODE(track->db_depth_info),
|
||||
+ track->db_depth_info);
|
||||
+ return -EINVAL;
|
||||
+ }
|
||||
+
|
||||
+ if (!IS_ALIGNED(pitch, pitch_align)) {
|
||||
+ dev_warn(p->dev, "%s:%d db pitch (%d) invalid\n",
|
||||
+ __func__, __LINE__, pitch);
|
||||
+ return -EINVAL;
|
||||
+ }
|
||||
+ if (!IS_ALIGNED(height, height_align)) {
|
||||
+ dev_warn(p->dev, "%s:%d db height (%d) invalid\n",
|
||||
+ __func__, __LINE__, height);
|
||||
+ return -EINVAL;
|
||||
+ }
|
||||
+ if (!IS_ALIGNED(base_offset, base_align)) {
|
||||
+ dev_warn(p->dev, "%s offset[%d] 0x%llx not aligned\n", __func__, i, base_offset);
|
||||
+ return -EINVAL;
|
||||
+ }
|
||||
+
|
||||
ntiles = G_028000_SLICE_TILE_MAX(track->db_depth_size) + 1;
|
||||
nviews = G_028004_SLICE_MAX(track->db_depth_view) + 1;
|
||||
tmp = ntiles * bpe * 64 * nviews;
|
||||
if ((tmp + track->db_offset) > radeon_bo_size(track->db_bo)) {
|
||||
- dev_warn(p->dev, "z/stencil buffer too small (0x%08X %d %d %d -> %d have %ld)\n",
|
||||
+ dev_warn(p->dev, "z/stencil buffer too small (0x%08X %d %d %d -> %u have %lu)\n",
|
||||
track->db_depth_size, ntiles, nviews, bpe, tmp + track->db_offset,
|
||||
radeon_bo_size(track->db_bo));
|
||||
return -EINVAL;
|
||||
@@ -724,7 +862,25 @@ static inline int r600_cs_check_reg(struct radeon_cs_parser *p, u32 reg, u32 idx
|
||||
track->db_depth_control = radeon_get_ib_value(p, idx);
|
||||
break;
|
||||
case R_028010_DB_DEPTH_INFO:
|
||||
- track->db_depth_info = radeon_get_ib_value(p, idx);
|
||||
+ if (r600_cs_packet_next_is_pkt3_nop(p)) {
|
||||
+ r = r600_cs_packet_next_reloc(p, &reloc);
|
||||
+ if (r) {
|
||||
+ dev_warn(p->dev, "bad SET_CONTEXT_REG "
|
||||
+ "0x%04X\n", reg);
|
||||
+ return -EINVAL;
|
||||
+ }
|
||||
+ track->db_depth_info = radeon_get_ib_value(p, idx);
|
||||
+ ib[idx] &= C_028010_ARRAY_MODE;
|
||||
+ track->db_depth_info &= C_028010_ARRAY_MODE;
|
||||
+ if (reloc->lobj.tiling_flags & RADEON_TILING_MACRO) {
|
||||
+ ib[idx] |= S_028010_ARRAY_MODE(V_028010_ARRAY_2D_TILED_THIN1);
|
||||
+ track->db_depth_info |= S_028010_ARRAY_MODE(V_028010_ARRAY_2D_TILED_THIN1);
|
||||
+ } else {
|
||||
+ ib[idx] |= S_028010_ARRAY_MODE(V_028010_ARRAY_1D_TILED_THIN1);
|
||||
+ track->db_depth_info |= S_028010_ARRAY_MODE(V_028010_ARRAY_1D_TILED_THIN1);
|
||||
+ }
|
||||
+ } else
|
||||
+ track->db_depth_info = radeon_get_ib_value(p, idx);
|
||||
break;
|
||||
case R_028004_DB_DEPTH_VIEW:
|
||||
track->db_depth_view = radeon_get_ib_value(p, idx);
|
||||
@@ -757,8 +913,25 @@ static inline int r600_cs_check_reg(struct radeon_cs_parser *p, u32 reg, u32 idx
|
||||
case R_0280B4_CB_COLOR5_INFO:
|
||||
case R_0280B8_CB_COLOR6_INFO:
|
||||
case R_0280BC_CB_COLOR7_INFO:
|
||||
- tmp = (reg - R_0280A0_CB_COLOR0_INFO) / 4;
|
||||
- track->cb_color_info[tmp] = radeon_get_ib_value(p, idx);
|
||||
+ if (r600_cs_packet_next_is_pkt3_nop(p)) {
|
||||
+ r = r600_cs_packet_next_reloc(p, &reloc);
|
||||
+ if (r) {
|
||||
+ dev_err(p->dev, "bad SET_CONTEXT_REG 0x%04X\n", reg);
|
||||
+ return -EINVAL;
|
||||
+ }
|
||||
+ tmp = (reg - R_0280A0_CB_COLOR0_INFO) / 4;
|
||||
+ track->cb_color_info[tmp] = radeon_get_ib_value(p, idx);
|
||||
+ if (reloc->lobj.tiling_flags & RADEON_TILING_MACRO) {
|
||||
+ ib[idx] |= S_0280A0_ARRAY_MODE(V_0280A0_ARRAY_2D_TILED_THIN1);
|
||||
+ track->cb_color_info[tmp] |= S_0280A0_ARRAY_MODE(V_0280A0_ARRAY_2D_TILED_THIN1);
|
||||
+ } else if (reloc->lobj.tiling_flags & RADEON_TILING_MICRO) {
|
||||
+ ib[idx] |= S_0280A0_ARRAY_MODE(V_0280A0_ARRAY_1D_TILED_THIN1);
|
||||
+ track->cb_color_info[tmp] |= S_0280A0_ARRAY_MODE(V_0280A0_ARRAY_1D_TILED_THIN1);
|
||||
+ }
|
||||
+ } else {
|
||||
+ tmp = (reg - R_0280A0_CB_COLOR0_INFO) / 4;
|
||||
+ track->cb_color_info[tmp] = radeon_get_ib_value(p, idx);
|
||||
+ }
|
||||
break;
|
||||
case R_028060_CB_COLOR0_SIZE:
|
||||
case R_028064_CB_COLOR1_SIZE:
|
||||
@@ -796,8 +969,6 @@ static inline int r600_cs_check_reg(struct radeon_cs_parser *p, u32 reg, u32 idx
|
||||
return -EINVAL;
|
||||
}
|
||||
ib[idx] = track->cb_color_base_last[tmp];
|
||||
- printk_once(KERN_WARNING "You have old & broken userspace "
|
||||
- "please consider updating mesa & xf86-video-ati\n");
|
||||
track->cb_color_frag_bo[tmp] = track->cb_color_bo[tmp];
|
||||
} else {
|
||||
r = r600_cs_packet_next_reloc(p, &reloc);
|
||||
@@ -824,8 +995,6 @@ static inline int r600_cs_check_reg(struct radeon_cs_parser *p, u32 reg, u32 idx
|
||||
return -EINVAL;
|
||||
}
|
||||
ib[idx] = track->cb_color_base_last[tmp];
|
||||
- printk_once(KERN_WARNING "You have old & broken userspace "
|
||||
- "please consider updating mesa & xf86-video-ati\n");
|
||||
track->cb_color_tile_bo[tmp] = track->cb_color_bo[tmp];
|
||||
} else {
|
||||
r = r600_cs_packet_next_reloc(p, &reloc);
|
||||
@@ -852,10 +1021,11 @@ static inline int r600_cs_check_reg(struct radeon_cs_parser *p, u32 reg, u32 idx
|
||||
return -EINVAL;
|
||||
}
|
||||
tmp = (reg - CB_COLOR0_BASE) / 4;
|
||||
- track->cb_color_bo_offset[tmp] = radeon_get_ib_value(p, idx);
|
||||
+ track->cb_color_bo_offset[tmp] = radeon_get_ib_value(p, idx) << 8;
|
||||
ib[idx] += (u32)((reloc->lobj.gpu_offset >> 8) & 0xffffffff);
|
||||
track->cb_color_base_last[tmp] = ib[idx];
|
||||
track->cb_color_bo[tmp] = reloc->robj;
|
||||
+ track->cb_color_bo_mc[tmp] = reloc->lobj.gpu_offset;
|
||||
break;
|
||||
case DB_DEPTH_BASE:
|
||||
r = r600_cs_packet_next_reloc(p, &reloc);
|
||||
@@ -864,9 +1034,10 @@ static inline int r600_cs_check_reg(struct radeon_cs_parser *p, u32 reg, u32 idx
|
||||
"0x%04X\n", reg);
|
||||
return -EINVAL;
|
||||
}
|
||||
- track->db_offset = radeon_get_ib_value(p, idx);
|
||||
+ track->db_offset = radeon_get_ib_value(p, idx) << 8;
|
||||
ib[idx] += (u32)((reloc->lobj.gpu_offset >> 8) & 0xffffffff);
|
||||
track->db_bo = reloc->robj;
|
||||
+ track->db_bo_mc = reloc->lobj.gpu_offset;
|
||||
break;
|
||||
case DB_HTILE_DATA_BASE:
|
||||
case SQ_PGM_START_FS:
|
||||
@@ -946,8 +1117,9 @@ static inline unsigned minify(unsigned size, unsigned levels)
|
||||
}
|
||||
|
||||
static void r600_texture_size(unsigned nfaces, unsigned blevel, unsigned nlevels,
|
||||
- unsigned w0, unsigned h0, unsigned d0, unsigned bpe,
|
||||
- unsigned *l0_size, unsigned *mipmap_size)
|
||||
+ unsigned w0, unsigned h0, unsigned d0, unsigned bpe,
|
||||
+ unsigned pitch_align,
|
||||
+ unsigned *l0_size, unsigned *mipmap_size)
|
||||
{
|
||||
unsigned offset, i, level, face;
|
||||
unsigned width, height, depth, rowstride, size;
|
||||
@@ -960,18 +1132,18 @@ static void r600_texture_size(unsigned nfaces, unsigned blevel, unsigned nlevels
|
||||
height = minify(h0, i);
|
||||
depth = minify(d0, i);
|
||||
for(face = 0; face < nfaces; face++) {
|
||||
- rowstride = ((width * bpe) + 255) & ~255;
|
||||
+ rowstride = ALIGN((width * bpe), pitch_align);
|
||||
size = height * rowstride * depth;
|
||||
offset += size;
|
||||
offset = (offset + 0x1f) & ~0x1f;
|
||||
}
|
||||
}
|
||||
- *l0_size = (((w0 * bpe) + 255) & ~255) * h0 * d0;
|
||||
+ *l0_size = ALIGN((w0 * bpe), pitch_align) * h0 * d0;
|
||||
*mipmap_size = offset;
|
||||
- if (!blevel)
|
||||
- *mipmap_size -= *l0_size;
|
||||
if (!nlevels)
|
||||
*mipmap_size = *l0_size;
|
||||
+ if (!blevel)
|
||||
+ *mipmap_size -= *l0_size;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -985,16 +1157,32 @@ static void r600_texture_size(unsigned nfaces, unsigned blevel, unsigned nlevels
|
||||
* the texture and mipmap bo object are big enough to cover this resource.
|
||||
*/
|
||||
static inline int r600_check_texture_resource(struct radeon_cs_parser *p, u32 idx,
|
||||
- struct radeon_bo *texture,
|
||||
- struct radeon_bo *mipmap)
|
||||
+ struct radeon_bo *texture,
|
||||
+ struct radeon_bo *mipmap,
|
||||
+ u64 base_offset,
|
||||
+ u64 mip_offset,
|
||||
+ u32 tiling_flags)
|
||||
{
|
||||
+ struct r600_cs_track *track = p->track;
|
||||
u32 nfaces, nlevels, blevel, w0, h0, d0, bpe = 0;
|
||||
u32 word0, word1, l0_size, mipmap_size;
|
||||
+ u32 height_align, pitch, pitch_align, depth_align;
|
||||
+ u64 base_align;
|
||||
+ struct array_mode_checker array_check;
|
||||
|
||||
/* on legacy kernel we don't perform advanced check */
|
||||
if (p->rdev == NULL)
|
||||
return 0;
|
||||
+
|
||||
+ /* convert to bytes */
|
||||
+ base_offset <<= 8;
|
||||
+ mip_offset <<= 8;
|
||||
+
|
||||
word0 = radeon_get_ib_value(p, idx + 0);
|
||||
+ if (tiling_flags & RADEON_TILING_MACRO)
|
||||
+ word0 |= S_038000_TILE_MODE(V_038000_ARRAY_2D_TILED_THIN1);
|
||||
+ else if (tiling_flags & RADEON_TILING_MICRO)
|
||||
+ word0 |= S_038000_TILE_MODE(V_038000_ARRAY_1D_TILED_THIN1);
|
||||
word1 = radeon_get_ib_value(p, idx + 1);
|
||||
w0 = G_038000_TEX_WIDTH(word0) + 1;
|
||||
h0 = G_038004_TEX_HEIGHT(word1) + 1;
|
||||
@@ -1021,24 +1209,59 @@ static inline int r600_check_texture_resource(struct radeon_cs_parser *p, u32 i
|
||||
__func__, __LINE__, G_038004_DATA_FORMAT(word1));
|
||||
return -EINVAL;
|
||||
}
|
||||
+
|
||||
+ /* pitch in texels */
|
||||
+ pitch = (G_038000_PITCH(word0) + 1) * 8;
|
||||
+ array_check.array_mode = G_038000_TILE_MODE(word0);
|
||||
+ array_check.group_size = track->group_size;
|
||||
+ array_check.nbanks = track->nbanks;
|
||||
+ array_check.npipes = track->npipes;
|
||||
+ array_check.nsamples = 1;
|
||||
+ array_check.bpe = bpe;
|
||||
+ if (r600_get_array_mode_alignment(&array_check,
|
||||
+ &pitch_align, &height_align, &depth_align, &base_align)) {
|
||||
+ dev_warn(p->dev, "%s:%d tex array mode (%d) invalid\n",
|
||||
+ __func__, __LINE__, G_038000_TILE_MODE(word0));
|
||||
+ return -EINVAL;
|
||||
+ }
|
||||
+
|
||||
+ /* XXX check height as well... */
|
||||
+
|
||||
+ if (!IS_ALIGNED(pitch, pitch_align)) {
|
||||
+ dev_warn(p->dev, "%s:%d tex pitch (%d) invalid\n",
|
||||
+ __func__, __LINE__, pitch);
|
||||
+ return -EINVAL;
|
||||
+ }
|
||||
+ if (!IS_ALIGNED(base_offset, base_align)) {
|
||||
+ dev_warn(p->dev, "%s:%d tex base offset (0x%llx) invalid\n",
|
||||
+ __func__, __LINE__, base_offset);
|
||||
+ return -EINVAL;
|
||||
+ }
|
||||
+ if (!IS_ALIGNED(mip_offset, base_align)) {
|
||||
+ dev_warn(p->dev, "%s:%d tex mip offset (0x%llx) invalid\n",
|
||||
+ __func__, __LINE__, mip_offset);
|
||||
+ return -EINVAL;
|
||||
+ }
|
||||
+
|
||||
word0 = radeon_get_ib_value(p, idx + 4);
|
||||
word1 = radeon_get_ib_value(p, idx + 5);
|
||||
blevel = G_038010_BASE_LEVEL(word0);
|
||||
nlevels = G_038014_LAST_LEVEL(word1);
|
||||
- r600_texture_size(nfaces, blevel, nlevels, w0, h0, d0, bpe, &l0_size, &mipmap_size);
|
||||
+ r600_texture_size(nfaces, blevel, nlevels, w0, h0, d0, bpe,
|
||||
+ (pitch_align * bpe),
|
||||
+ &l0_size, &mipmap_size);
|
||||
/* using get ib will give us the offset into the texture bo */
|
||||
- word0 = radeon_get_ib_value(p, idx + 2);
|
||||
+ word0 = radeon_get_ib_value(p, idx + 2) << 8;
|
||||
if ((l0_size + word0) > radeon_bo_size(texture)) {
|
||||
dev_warn(p->dev, "texture bo too small (%d %d %d %d -> %d have %ld)\n",
|
||||
w0, h0, bpe, word0, l0_size, radeon_bo_size(texture));
|
||||
return -EINVAL;
|
||||
}
|
||||
/* using get ib will give us the offset into the mipmap bo */
|
||||
- word0 = radeon_get_ib_value(p, idx + 3);
|
||||
+ word0 = radeon_get_ib_value(p, idx + 3) << 8;
|
||||
if ((mipmap_size + word0) > radeon_bo_size(mipmap)) {
|
||||
- dev_warn(p->dev, "mipmap bo too small (%d %d %d %d %d %d -> %d have %ld)\n",
|
||||
- w0, h0, bpe, blevel, nlevels, word0, mipmap_size, radeon_bo_size(texture));
|
||||
- return -EINVAL;
|
||||
+ /*dev_warn(p->dev, "mipmap bo too small (%d %d %d %d %d %d -> %d have %ld)\n",
|
||||
+ w0, h0, bpe, blevel, nlevels, word0, mipmap_size, radeon_bo_size(texture));*/
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@@ -1228,7 +1451,7 @@ static int r600_packet3_check(struct radeon_cs_parser *p,
|
||||
}
|
||||
for (i = 0; i < (pkt->count / 7); i++) {
|
||||
struct radeon_bo *texture, *mipmap;
|
||||
- u32 size, offset;
|
||||
+ u32 size, offset, base_offset, mip_offset;
|
||||
|
||||
switch (G__SQ_VTX_CONSTANT_TYPE(radeon_get_ib_value(p, idx+(i*7)+6+1))) {
|
||||
case SQ_TEX_VTX_VALID_TEXTURE:
|
||||
@@ -1238,7 +1461,11 @@ static int r600_packet3_check(struct radeon_cs_parser *p,
|
||||
DRM_ERROR("bad SET_RESOURCE\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
- ib[idx+1+(i*7)+2] += (u32)((reloc->lobj.gpu_offset >> 8) & 0xffffffff);
|
||||
+ base_offset = (u32)((reloc->lobj.gpu_offset >> 8) & 0xffffffff);
|
||||
+ if (reloc->lobj.tiling_flags & RADEON_TILING_MACRO)
|
||||
+ ib[idx+1+(i*7)+0] |= S_038000_TILE_MODE(V_038000_ARRAY_2D_TILED_THIN1);
|
||||
+ else if (reloc->lobj.tiling_flags & RADEON_TILING_MICRO)
|
||||
+ ib[idx+1+(i*7)+0] |= S_038000_TILE_MODE(V_038000_ARRAY_1D_TILED_THIN1);
|
||||
texture = reloc->robj;
|
||||
/* tex mip base */
|
||||
r = r600_cs_packet_next_reloc(p, &reloc);
|
||||
@@ -1246,12 +1473,17 @@ static int r600_packet3_check(struct radeon_cs_parser *p,
|
||||
DRM_ERROR("bad SET_RESOURCE\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
- ib[idx+1+(i*7)+3] += (u32)((reloc->lobj.gpu_offset >> 8) & 0xffffffff);
|
||||
+ mip_offset = (u32)((reloc->lobj.gpu_offset >> 8) & 0xffffffff);
|
||||
mipmap = reloc->robj;
|
||||
r = r600_check_texture_resource(p, idx+(i*7)+1,
|
||||
- texture, mipmap);
|
||||
+ texture, mipmap,
|
||||
+ base_offset + radeon_get_ib_value(p, idx+1+(i*7)+2),
|
||||
+ mip_offset + radeon_get_ib_value(p, idx+1+(i*7)+3),
|
||||
+ reloc->lobj.tiling_flags);
|
||||
if (r)
|
||||
return r;
|
||||
+ ib[idx+1+(i*7)+2] += base_offset;
|
||||
+ ib[idx+1+(i*7)+3] += mip_offset;
|
||||
break;
|
||||
case SQ_TEX_VTX_VALID_BUFFER:
|
||||
/* vtx base */
|
||||
@@ -1261,10 +1493,11 @@ static int r600_packet3_check(struct radeon_cs_parser *p,
|
||||
return -EINVAL;
|
||||
}
|
||||
offset = radeon_get_ib_value(p, idx+1+(i*7)+0);
|
||||
- size = radeon_get_ib_value(p, idx+1+(i*7)+1);
|
||||
+ size = radeon_get_ib_value(p, idx+1+(i*7)+1) + 1;
|
||||
if (p->rdev && (size + offset) > radeon_bo_size(reloc->robj)) {
|
||||
/* force size to size of the buffer */
|
||||
- dev_warn(p->dev, "vbo resource seems too big for the bo\n");
|
||||
+ dev_warn(p->dev, "vbo resource seems too big (%d) for the bo (%ld)\n",
|
||||
+ size + offset, radeon_bo_size(reloc->robj));
|
||||
ib[idx+1+(i*7)+1] = radeon_bo_size(reloc->robj);
|
||||
}
|
||||
ib[idx+1+(i*7)+0] += (u32)((reloc->lobj.gpu_offset) & 0xffffffff);
|
||||
diff --git a/drivers/gpu/drm/radeon/r600d.h b/drivers/gpu/drm/radeon/r600d.h
|
||||
index 84bc28e..9577945 100644
|
||||
--- a/drivers/gpu/drm/radeon/r600d.h
|
||||
+++ b/drivers/gpu/drm/radeon/r600d.h
|
||||
@@ -51,6 +51,12 @@
|
||||
#define PTE_READABLE (1 << 5)
|
||||
#define PTE_WRITEABLE (1 << 6)
|
||||
|
||||
+/* tiling bits */
|
||||
+#define ARRAY_LINEAR_GENERAL 0x00000000
|
||||
+#define ARRAY_LINEAR_ALIGNED 0x00000001
|
||||
+#define ARRAY_1D_TILED_THIN1 0x00000002
|
||||
+#define ARRAY_2D_TILED_THIN1 0x00000004
|
||||
+
|
||||
/* Registers */
|
||||
#define ARB_POP 0x2418
|
||||
#define ENABLE_TC128 (1 << 30)
|
||||
@@ -1155,6 +1161,10 @@
|
||||
#define S_038000_TILE_MODE(x) (((x) & 0xF) << 3)
|
||||
#define G_038000_TILE_MODE(x) (((x) >> 3) & 0xF)
|
||||
#define C_038000_TILE_MODE 0xFFFFFF87
|
||||
+#define V_038000_ARRAY_LINEAR_GENERAL 0x00000000
|
||||
+#define V_038000_ARRAY_LINEAR_ALIGNED 0x00000001
|
||||
+#define V_038000_ARRAY_1D_TILED_THIN1 0x00000002
|
||||
+#define V_038000_ARRAY_2D_TILED_THIN1 0x00000004
|
||||
#define S_038000_TILE_TYPE(x) (((x) & 0x1) << 7)
|
||||
#define G_038000_TILE_TYPE(x) (((x) >> 7) & 0x1)
|
||||
#define C_038000_TILE_TYPE 0xFFFFFF7F
|
||||
@@ -1358,6 +1368,8 @@
|
||||
#define S_028010_ARRAY_MODE(x) (((x) & 0xF) << 15)
|
||||
#define G_028010_ARRAY_MODE(x) (((x) >> 15) & 0xF)
|
||||
#define C_028010_ARRAY_MODE 0xFFF87FFF
|
||||
+#define V_028010_ARRAY_1D_TILED_THIN1 0x00000002
|
||||
+#define V_028010_ARRAY_2D_TILED_THIN1 0x00000004
|
||||
#define S_028010_TILE_SURFACE_ENABLE(x) (((x) & 0x1) << 25)
|
||||
#define G_028010_TILE_SURFACE_ENABLE(x) (((x) >> 25) & 0x1)
|
||||
#define C_028010_TILE_SURFACE_ENABLE 0xFDFFFFFF
|
@ -1,86 +0,0 @@
|
||||
From 32f519d32ca9ca0f84e81953c8d9ddefdb7771d3 Mon Sep 17 00:00:00 2001
|
||||
From: Alex Deucher <alexdeucher@gmail.com>
|
||||
Date: Sun, 13 Feb 2011 18:38:23 -0500
|
||||
Subject: [PATCH] drm/radeon/kms: hopefully fix pll issues for real (v3)
|
||||
|
||||
The problematic boards have a recommended reference divider
|
||||
to be used when spread spectrum is enabled on the laptop panel.
|
||||
Enable the use of the recommended reference divider along with
|
||||
the new pll algo.
|
||||
|
||||
v2: testing options
|
||||
|
||||
v3: When using the fixed reference divider with
|
||||
LVDS, prefer min m to max p and use fractional feedback dividers.
|
||||
|
||||
Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
|
||||
Cc: stable@kernel.org
|
||||
---
|
||||
drivers/gpu/drm/radeon/atombios_crtc.c | 22 ++++++++--------------
|
||||
1 files changed, 8 insertions(+), 14 deletions(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/radeon/atombios_crtc.c b/drivers/gpu/drm/radeon/atombios_crtc.c
|
||||
index 1bf6122..3127a28 100644
|
||||
--- a/drivers/gpu/drm/radeon/atombios_crtc.c
|
||||
+++ b/drivers/gpu/drm/radeon/atombios_crtc.c
|
||||
@@ -538,7 +538,6 @@ static u32 atombios_adjust_pll(struct drm_crtc *crtc,
|
||||
pll->flags |= RADEON_PLL_PREFER_HIGH_FB_DIV;
|
||||
else
|
||||
pll->flags |= RADEON_PLL_PREFER_LOW_REF_DIV;
|
||||
-
|
||||
}
|
||||
|
||||
list_for_each_entry(encoder, &dev->mode_config.encoder_list, head) {
|
||||
@@ -555,29 +554,28 @@ static u32 atombios_adjust_pll(struct drm_crtc *crtc,
|
||||
dp_clock = dig_connector->dp_clock;
|
||||
}
|
||||
}
|
||||
-/* this might work properly with the new pll algo */
|
||||
-#if 0 /* doesn't work properly on some laptops */
|
||||
+
|
||||
/* use recommended ref_div for ss */
|
||||
if (radeon_encoder->devices & (ATOM_DEVICE_LCD_SUPPORT)) {
|
||||
+ pll->flags |= RADEON_PLL_PREFER_MINM_OVER_MAXP;
|
||||
if (ss_enabled) {
|
||||
if (ss->refdiv) {
|
||||
pll->flags |= RADEON_PLL_USE_REF_DIV;
|
||||
pll->reference_div = ss->refdiv;
|
||||
+ if (ASIC_IS_AVIVO(rdev))
|
||||
+ pll->flags |= RADEON_PLL_USE_FRAC_FB_DIV;
|
||||
}
|
||||
}
|
||||
}
|
||||
-#endif
|
||||
+
|
||||
if (ASIC_IS_AVIVO(rdev)) {
|
||||
/* DVO wants 2x pixel clock if the DVO chip is in 12 bit mode */
|
||||
if (radeon_encoder->encoder_id == ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DVO1)
|
||||
adjusted_clock = mode->clock * 2;
|
||||
if (radeon_encoder->active_device & (ATOM_DEVICE_TV_SUPPORT))
|
||||
pll->flags |= RADEON_PLL_PREFER_CLOSEST_LOWER;
|
||||
- /* rv515 needs more testing with this option */
|
||||
- if (rdev->family != CHIP_RV515) {
|
||||
- if (radeon_encoder->devices & (ATOM_DEVICE_LCD_SUPPORT))
|
||||
- pll->flags |= RADEON_PLL_IS_LCD;
|
||||
- }
|
||||
+ if (radeon_encoder->devices & (ATOM_DEVICE_LCD_SUPPORT))
|
||||
+ pll->flags |= RADEON_PLL_IS_LCD;
|
||||
} else {
|
||||
if (encoder->encoder_type != DRM_MODE_ENCODER_DAC)
|
||||
pll->flags |= RADEON_PLL_NO_ODD_POST_DIV;
|
||||
@@ -957,11 +955,7 @@ static void atombios_crtc_set_pll(struct drm_crtc *crtc, struct drm_display_mode
|
||||
/* adjust pixel clock as needed */
|
||||
adjusted_clock = atombios_adjust_pll(crtc, mode, pll, ss_enabled, &ss);
|
||||
|
||||
- /* rv515 seems happier with the old algo */
|
||||
- if (rdev->family == CHIP_RV515)
|
||||
- radeon_compute_pll_legacy(pll, adjusted_clock, &pll_clock, &fb_div, &frac_fb_div,
|
||||
- &ref_div, &post_div);
|
||||
- else if (ASIC_IS_AVIVO(rdev))
|
||||
+ if (ASIC_IS_AVIVO(rdev))
|
||||
radeon_compute_pll_avivo(pll, adjusted_clock, &pll_clock, &fb_div, &frac_fb_div,
|
||||
&ref_div, &post_div);
|
||||
else
|
||||
--
|
||||
1.7.1.1
|
||||
|
@ -1,60 +0,0 @@
|
||||
From 8c6113cd03c7e927f5ee5f6ad98e155ef2d27177 Mon Sep 17 00:00:00 2001
|
||||
From: Willy Tarreau <w@1wt.eu>
|
||||
Date: Sun, 20 Feb 2011 11:43:36 +0100
|
||||
Subject: [PATCH] rtlwifi: Eliminate udelay calls with too large values
|
||||
|
||||
On ARM, compilation of rtlwifi/efuse.c fails with the message:
|
||||
ERROR: "__bad_udelay" [drivers/net/wireless/rtlwifi/rtlwifi.ko] undefined!
|
||||
On inspection, the faulty calls are in routine efuse_reset_loader(), a
|
||||
routine that is never used, and the faulty routine is deleted.
|
||||
|
||||
Signed-off-by: Willy Tarreau <w@1wt.eu>
|
||||
Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
|
||||
Signed-off-by: John W. Linville <linville@tuxdriver.com>
|
||||
---
|
||||
drivers/net/wireless/rtlwifi/efuse.c | 18 ------------------
|
||||
drivers/net/wireless/rtlwifi/efuse.h | 3 ---
|
||||
2 files changed, 0 insertions(+), 21 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/wireless/rtlwifi/efuse.c b/drivers/net/wireless/rtlwifi/efuse.c
|
||||
index 62876cd..4f92cba 100644
|
||||
--- a/drivers/net/wireless/rtlwifi/efuse.c
|
||||
+++ b/drivers/net/wireless/rtlwifi/efuse.c
|
||||
@@ -1169,21 +1169,3 @@ static u8 efuse_calculate_word_cnts(u8 word_en)
|
||||
return word_cnts;
|
||||
}
|
||||
|
||||
-void efuse_reset_loader(struct ieee80211_hw *hw)
|
||||
-{
|
||||
- struct rtl_priv *rtlpriv = rtl_priv(hw);
|
||||
- u16 tmp_u2b;
|
||||
-
|
||||
- tmp_u2b = rtl_read_word(rtlpriv, rtlpriv->cfg->maps[SYS_FUNC_EN]);
|
||||
- rtl_write_word(rtlpriv, rtlpriv->cfg->maps[SYS_FUNC_EN],
|
||||
- (tmp_u2b & ~(BIT(12))));
|
||||
- udelay(10000);
|
||||
- rtl_write_word(rtlpriv, rtlpriv->cfg->maps[SYS_FUNC_EN],
|
||||
- (tmp_u2b | BIT(12)));
|
||||
- udelay(10000);
|
||||
-}
|
||||
-
|
||||
-bool efuse_program_map(struct ieee80211_hw *hw, char *p_filename, u8 tabletype)
|
||||
-{
|
||||
- return true;
|
||||
-}
|
||||
diff --git a/drivers/net/wireless/rtlwifi/efuse.h b/drivers/net/wireless/rtlwifi/efuse.h
|
||||
index 2d39a4d..47774dd 100644
|
||||
--- a/drivers/net/wireless/rtlwifi/efuse.h
|
||||
+++ b/drivers/net/wireless/rtlwifi/efuse.h
|
||||
@@ -117,8 +117,5 @@ extern bool efuse_shadow_update_chk(struct ieee80211_hw *hw);
|
||||
extern void rtl_efuse_shadow_map_update(struct ieee80211_hw *hw);
|
||||
extern void efuse_force_write_vendor_Id(struct ieee80211_hw *hw);
|
||||
extern void efuse_re_pg_section(struct ieee80211_hw *hw, u8 section_idx);
|
||||
-extern bool efuse_program_map(struct ieee80211_hw *hw,
|
||||
- char *p_filename, u8 tabletype);
|
||||
-extern void efuse_reset_loader(struct ieee80211_hw *hw);
|
||||
|
||||
#endif
|
||||
--
|
||||
1.7.5.1
|
||||
|
@ -1,22 +0,0 @@
|
||||
diff --git a/mm/vmscan.c b/mm/vmscan.c
|
||||
index b55699c..3817fa9 100644
|
||||
--- a/mm/vmscan.c
|
||||
+++ b/mm/vmscan.c
|
||||
@@ -2066,6 +2066,16 @@ static void shrink_zones(int priority, struct zonelist *zonelist,
|
||||
continue;
|
||||
if (zone->all_unreclaimable && priority != DEF_PRIORITY)
|
||||
continue; /* Let kswapd poll it */
|
||||
+ if (COMPACTION_BUILD) {
|
||||
+ /*
|
||||
+ * If we already have plenty of memory free
|
||||
+ * for compaction, don't free any more.
|
||||
+ */
|
||||
+ if (sc->order > PAGE_ALLOC_COSTLY_ORDER &&
|
||||
+ (compaction_suitable(zone, sc->order) ||
|
||||
+ compaction_deferred(zone)))
|
||||
+ continue;
|
||||
+ }
|
||||
/*
|
||||
* This steals pages from memory cgroups over softlimit
|
||||
* and returns the number of reclaimed pages and
|
||||
|
@ -1,63 +0,0 @@
|
||||
diff --git a/mm/vmscan.c b/mm/vmscan.c
|
||||
index 3817fa9..522f205 100644
|
||||
--- a/mm/vmscan.c
|
||||
+++ b/mm/vmscan.c
|
||||
@@ -2044,14 +2044,19 @@ restart:
|
||||
*
|
||||
* If a zone is deemed to be full of pinned pages then just give it a light
|
||||
* scan then give up on it.
|
||||
+ *
|
||||
+ * This function returns true if a zone is being reclaimed for a costly
|
||||
+ * high-order allocation and compaction is either ready to begin or deferred.
|
||||
+ * This indicates to the caller that it should retry the allocation or fail.
|
||||
*/
|
||||
-static void shrink_zones(int priority, struct zonelist *zonelist,
|
||||
+static bool shrink_zones(int priority, struct zonelist *zonelist,
|
||||
struct scan_control *sc)
|
||||
{
|
||||
struct zoneref *z;
|
||||
struct zone *zone;
|
||||
unsigned long nr_soft_reclaimed;
|
||||
unsigned long nr_soft_scanned;
|
||||
+ bool should_abort_reclaim = false;
|
||||
|
||||
for_each_zone_zonelist_nodemask(zone, z, zonelist,
|
||||
gfp_zone(sc->gfp_mask), sc->nodemask) {
|
||||
@@ -2069,12 +2074,15 @@ static void shrink_zones(int priority, struct zonelist *zonelist,
|
||||
if (COMPACTION_BUILD) {
|
||||
/*
|
||||
* If we already have plenty of memory free
|
||||
- * for compaction, don't free any more.
|
||||
+ * for compaction in this zone , don't free any
|
||||
+ * more.
|
||||
*/
|
||||
if (sc->order > PAGE_ALLOC_COSTLY_ORDER &&
|
||||
(compaction_suitable(zone, sc->order) ||
|
||||
- compaction_deferred(zone)))
|
||||
+ compaction_deferred(zone))) {
|
||||
+ should_abort_reclaim = true;
|
||||
continue;
|
||||
+ }
|
||||
}
|
||||
/*
|
||||
* This steals pages from memory cgroups over softlimit
|
||||
@@ -2093,6 +2101,8 @@ static void shrink_zones(int priority, struct zonelist *zonelist,
|
||||
|
||||
shrink_zone(priority, zone, sc);
|
||||
}
|
||||
+
|
||||
+ return should_abort_reclaim;
|
||||
}
|
||||
|
||||
static bool zone_reclaimable(struct zone *zone)
|
||||
@@ -2157,7 +2167,9 @@ static unsigned long do_try_to_free_pages(struct zonelist *zonelist,
|
||||
sc->nr_scanned = 0;
|
||||
if (!priority)
|
||||
disable_swap_token(sc->mem_cgroup);
|
||||
- shrink_zones(priority, zonelist, sc);
|
||||
+ if (shrink_zones(priority, zonelist, sc))
|
||||
+ break;
|
||||
+
|
||||
/*
|
||||
* Don't shrink slabs when reclaiming memory from
|
||||
* over limit cgroups
|
@ -1,21 +0,0 @@
|
||||
diff --git a/arch/x86/kernel/microcode_core.c b/arch/x86/kernel/microcode_core.c
|
||||
index f924280..cd7ef2f 100644
|
||||
--- a/arch/x86/kernel/microcode_core.c
|
||||
+++ b/arch/x86/kernel/microcode_core.c
|
||||
@@ -483,7 +483,15 @@ mc_cpu_callback(struct notifier_block *nb, unsigned long action, void *hcpu)
|
||||
sysfs_remove_group(&sys_dev->kobj, &mc_attr_group);
|
||||
pr_debug("CPU%d removed\n", cpu);
|
||||
break;
|
||||
- case CPU_DEAD:
|
||||
+
|
||||
+ /*
|
||||
+ * Do not invalidate the microcode if a CPU goes offline,
|
||||
+ * because it would be impossible to get the microcode again
|
||||
+ * from userspace when the CPU comes back up, if the userspace
|
||||
+ * happens to be frozen at that moment by the freezer subsystem,
|
||||
+ * for example, due to a suspend operation in progress.
|
||||
+ */
|
||||
+
|
||||
case CPU_UP_CANCELED_FROZEN:
|
||||
/* The CPU refused to come up during a system resume */
|
||||
microcode_fini_cpu(cpu);
|
@ -1,22 +0,0 @@
|
||||
diff -ru kernel-2.6.38mamba-arm.orig//drivers/dma/pch_dma.c kernel-2.6.38mamba-arm/drivers/dma/pch_dma.c
|
||||
--- kernel-2.6.38mamba-arm.orig//drivers/dma/pch_dma.c 2011-05-14 16:12:25.650768202 +0200
|
||||
+++ kernel-2.6.38mamba-arm/drivers/dma/pch_dma.c 2011-05-14 16:08:03.266987477 +0200
|
||||
@@ -24,6 +24,7 @@
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/pch_dma.h>
|
||||
+#include <linux/slab.h>
|
||||
|
||||
#define DRV_NAME "pch-dma"
|
||||
|
||||
diff -ru kernel-2.6.38mamba-arm.orig//drivers/gpio/gpio-ml-ioh.c kernel-2.6.38mamba-arm/drivers/gpio/ml_ioh_gpio.c
|
||||
--- kernel-2.6.38mamba-arm.orig//drivers/gpio/gpio-ml-ioh.c 2011-05-14 16:12:49.406381203 +0200
|
||||
+++ kernel-2.6.38mamba-arm/drivers/gpio/gpio-ml-ioh.c 2011-05-14 16:07:17.392970223 +0200
|
||||
@@ -17,6 +17,7 @@
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/pci.h>
|
||||
#include <linux/gpio.h>
|
||||
+#include <linux/slab.h>
|
||||
|
||||
#define PCI_VENDOR_ID_ROHM 0x10DB
|
||||
|
@ -1,12 +0,0 @@
|
||||
--- kernel-3.10mamba-arm/drivers/mtd/nand/Kconfig.orig 2013-07-01 00:13:29.000000000 +0200
|
||||
+++ kernel-3.10mamba-arm/drivers/mtd/nand/Kconfig 2013-07-23 12:33:22.442708624 +0200
|
||||
@@ -95,8 +95,7 @@
|
||||
|
||||
config MTD_NAND_OMAP_BCH
|
||||
depends on MTD_NAND && MTD_NAND_OMAP2 && ARCH_OMAP3
|
||||
- bool "Enable support for hardware BCH error correction"
|
||||
- default n
|
||||
+ tristate "Enable support for hardware BCH error correction"
|
||||
select BCH
|
||||
select BCH_CONST_PARAMS
|
||||
help
|
@ -1,12 +0,0 @@
|
||||
diff --git a/arch/arm/include/asm/bug.h b/arch/arm/include/asm/bug.h
|
||||
index 9abe7a0..fac79dc 100644
|
||||
--- a/arch/arm/include/asm/bug.h
|
||||
+++ b/arch/arm/include/asm/bug.h
|
||||
@@ -32,7 +32,6 @@
|
||||
|
||||
#define __BUG(__file, __line, __value) \
|
||||
do { \
|
||||
- BUILD_BUG_ON(sizeof(struct bug_entry) != 12); \
|
||||
asm volatile("1:\t" BUG_INSTR_TYPE #__value "\n" \
|
||||
".pushsection .rodata.str, \"aMS\", %progbits, 1\n" \
|
||||
"2:\t.asciz " #__file "\n" \
|
File diff suppressed because it is too large
Load Diff
@ -1,18 +0,0 @@
|
||||
--- kernel-3.2mamba/drivers/usb/serial/option.c.orig 2012-08-23 15:56:44.365815308 +0200
|
||||
+++ kernel-3.2mamba/drivers/usb/serial/option.c 2012-08-23 16:03:43.626467553 +0200
|
||||
@@ -156,6 +156,7 @@
|
||||
#define HUAWEI_PRODUCT_K4510 0x14CB
|
||||
#define HUAWEI_PRODUCT_K4511 0x14CC
|
||||
#define HUAWEI_PRODUCT_ETS1220 0x1803
|
||||
+#define HUAWEI_PRODUCT_E352 0x1444
|
||||
#define HUAWEI_PRODUCT_E353 0x1506
|
||||
#define HUAWEI_PRODUCT_E173S 0x1C05
|
||||
|
||||
@@ -700,6 +701,7 @@
|
||||
{ USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K4510, 0xff, 0x01, 0x32) },
|
||||
{ USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K4511, 0xff, 0x01, 0x31) },
|
||||
{ USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K4511, 0xff, 0x01, 0x32) },
|
||||
+ { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E352, 0xff, 0xff, 0xff) },
|
||||
{ USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E353, 0xff, 0x01, 0x01) },
|
||||
{ USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E353, 0xff, 0x01, 0x02) },
|
||||
{ USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E353, 0xff, 0x01, 0x03) },
|
@ -1,36 +0,0 @@
|
||||
diff --git a/drivers/net/wireless/ipw2x00/ipw2200.c b/drivers/net/wireless/ipw2x00/ipw2200.c
|
||||
index 4130802..8cbafa5 100644
|
||||
--- a/drivers/net/wireless/ipw2x00/ipw2200.c
|
||||
+++ b/drivers/net/wireless/ipw2x00/ipw2200.c
|
||||
@@ -2192,6 +2192,7 @@ static int __ipw_send_cmd(struct ipw_priv *priv, struct host_cmd *cmd)
|
||||
{
|
||||
int rc = 0;
|
||||
unsigned long flags;
|
||||
+ unsigned long now, end;
|
||||
|
||||
spin_lock_irqsave(&priv->lock, flags);
|
||||
if (priv->status & STATUS_HCMD_ACTIVE) {
|
||||
@@ -2233,10 +2234,20 @@ static int __ipw_send_cmd(struct ipw_priv *priv, struct host_cmd *cmd)
|
||||
}
|
||||
spin_unlock_irqrestore(&priv->lock, flags);
|
||||
|
||||
+ now = jiffies;
|
||||
+ end = now + HOST_COMPLETE_TIMEOUT;
|
||||
+again:
|
||||
rc = wait_event_interruptible_timeout(priv->wait_command_queue,
|
||||
!(priv->
|
||||
status & STATUS_HCMD_ACTIVE),
|
||||
- HOST_COMPLETE_TIMEOUT);
|
||||
+ end - now);
|
||||
+ if (rc < 0) {
|
||||
+ now = jiffies;
|
||||
+ if (time_before(now, end))
|
||||
+ goto again;
|
||||
+ rc = 0;
|
||||
+ }
|
||||
+
|
||||
if (rc == 0) {
|
||||
spin_lock_irqsave(&priv->lock, flags);
|
||||
if (priv->status & STATUS_HCMD_ACTIVE) {
|
||||
--
|
||||
1.7.2.5
|
@ -1,13 +0,0 @@
|
||||
--- kernel-3.2mamba/drivers/net/usb/asix.c.orig 2012-03-11 17:40:47.570425305 +0100
|
||||
+++ kernel-3.2mamba/drivers/net/usb/asix.c 2012-03-11 18:02:23.178248012 +0100
|
||||
@@ -1580,6 +1580,10 @@
|
||||
USB_DEVICE (0x6189, 0x182d),
|
||||
.driver_info = (unsigned long) &ax8817x_info,
|
||||
}, {
|
||||
+ // Sitecom LN-031 "USB 2.0 10/100/1000 Ethernet adapter"
|
||||
+ USB_DEVICE (0x0df6, 0x0056),
|
||||
+ .driver_info = (unsigned long) &ax88178_info,
|
||||
+}, {
|
||||
// corega FEther USB2-TX
|
||||
USB_DEVICE (0x07aa, 0x0017),
|
||||
.driver_info = (unsigned long) &ax8817x_info,
|
@ -1,42 +0,0 @@
|
||||
From 64e16e442b7d33801b5c1a41cf5c87d4d8ff1e10 Mon Sep 17 00:00:00 2001
|
||||
From: Zhang Rui <rui.zhang@intel.com>
|
||||
Date: Fri, 30 Nov 2012 14:35:43 +0800
|
||||
Subject: [PATCH 1/2] ACPI : do not use Lid and Sleep button for S5 wakeup
|
||||
|
||||
We should not use Lid and Sleep button for S5 wakeup
|
||||
https://bugzilla.kernel.org/show_bug.cgi?id=35262
|
||||
|
||||
Signed-off-by: Zhang Rui <rui.zhang@intel.com>
|
||||
---
|
||||
drivers/acpi/scan.c | 7 ++++++-
|
||||
1 file changed, 6 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c
|
||||
index d1ecca2..35674c2 100644
|
||||
--- a/drivers/acpi/scan.c
|
||||
+++ b/drivers/acpi/scan.c
|
||||
@@ -807,8 +807,8 @@ acpi_bus_extract_wakeup_device_power_package(acpi_handle handle,
|
||||
static void acpi_bus_set_run_wake_flags(struct acpi_device *device)
|
||||
{
|
||||
struct acpi_device_id button_device_ids[] = {
|
||||
- {"PNP0C0D", 0},
|
||||
{"PNP0C0C", 0},
|
||||
+ {"PNP0C0D", 0},
|
||||
{"PNP0C0E", 0},
|
||||
{"", 0},
|
||||
};
|
||||
@@ -820,6 +820,11 @@ static void acpi_bus_set_run_wake_flags(struct acpi_device *device)
|
||||
/* Power button, Lid switch always enable wakeup */
|
||||
if (!acpi_match_device_ids(device, button_device_ids)) {
|
||||
device->wakeup.flags.run_wake = 1;
|
||||
+ if (!acpi_match_device_ids(device, &button_device_ids[1])) {
|
||||
+ /* Do not use Lid/sleep button for S5 wakeup */
|
||||
+ if (device->wakeup.sleep_state == ACPI_STATE_S5)
|
||||
+ device->wakeup.sleep_state = ACPI_STATE_S4;
|
||||
+ }
|
||||
device_set_wakeup_capable(&device->dev, true);
|
||||
return;
|
||||
}
|
||||
--
|
||||
1.7.9.5
|
||||
|
@ -1,68 +0,0 @@
|
||||
From 0d0cdb028f9d9771e2b346038707734121f906e3 Mon Sep 17 00:00:00 2001
|
||||
From: Aaron Lu <aaron.lu@intel.com>
|
||||
Date: Mon, 26 Nov 2012 13:55:25 +0800
|
||||
Subject: [PATCH] libata: restore acpi disable functionality
|
||||
|
||||
Commit 66fa7f215 "libata-acpi: improve ACPI disabling" introdcued the
|
||||
behaviour of disabling ATA ACPI if ata_acpi_on_devcfg failed the 2nd
|
||||
time, but commit 30dcf76ac dropped this behaviour and this caused
|
||||
problem for Dimitris Damigos, where his laptop can not resume correctly.
|
||||
|
||||
The bugzilla page for it is:
|
||||
https://bugzilla.kernel.org/show_bug.cgi?id=49331
|
||||
|
||||
The problem is, ata_dev_push_id will fail the 2nd time it is invoked,
|
||||
and due to disabling ACPI code is dropped, ata_acpi_on_devcfg which
|
||||
calls ata_dev_push_id will keep failing and eventually made the device
|
||||
disabled.
|
||||
|
||||
This patch restores the original behaviour, if acpi failed the 2nd time,
|
||||
disable acpi functionality for the device(and we do not event need to
|
||||
add a debug message for this as it is still there ;-).
|
||||
|
||||
Reported-by: Dimitris Damigos <damigos@freemail.gr>
|
||||
Signed-off-by: Aaron Lu <aaron.lu@intel.com>
|
||||
Cc: <stable@vger.kernel.org>
|
||||
Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
|
||||
---
|
||||
drivers/ata/libata-acpi.c | 4 ++++
|
||||
include/linux/libata.h | 1 +
|
||||
2 files changed, 5 insertions(+), 0 deletions(-)
|
||||
|
||||
diff --git a/drivers/ata/libata-acpi.c b/drivers/ata/libata-acpi.c
|
||||
index 5b0ba3f..ef01ac0 100644
|
||||
--- a/drivers/ata/libata-acpi.c
|
||||
+++ b/drivers/ata/libata-acpi.c
|
||||
@@ -76,6 +76,9 @@ acpi_handle ata_dev_acpi_handle(struct ata_device *dev)
|
||||
acpi_integer adr;
|
||||
struct ata_port *ap = dev->link->ap;
|
||||
|
||||
+ if (dev->flags & ATA_DFLAG_ACPI_DISABLED)
|
||||
+ return NULL;
|
||||
+
|
||||
if (ap->flags & ATA_FLAG_ACPI_SATA) {
|
||||
if (!sata_pmp_attached(ap))
|
||||
adr = SATA_ADR(ap->port_no, NO_PORT_MULT);
|
||||
@@ -945,6 +948,7 @@ int ata_acpi_on_devcfg(struct ata_device *dev)
|
||||
return rc;
|
||||
}
|
||||
|
||||
+ dev->flags |= ATA_DFLAG_ACPI_DISABLED;
|
||||
ata_dev_warn(dev, "ACPI: failed the second time, disabled\n");
|
||||
|
||||
/* We can safely continue if no _GTF command has been executed
|
||||
diff --git a/include/linux/libata.h b/include/linux/libata.h
|
||||
index 77eeeda..e931c9a 100644
|
||||
--- a/include/linux/libata.h
|
||||
+++ b/include/linux/libata.h
|
||||
@@ -163,6 +163,7 @@ enum {
|
||||
|
||||
ATA_DFLAG_DA = (1 << 26), /* device supports Device Attention */
|
||||
ATA_DFLAG_DEVSLP = (1 << 27), /* device supports Device Sleep */
|
||||
+ ATA_DFLAG_ACPI_DISABLED = (1 << 28), /* ACPI for the device is disabled */
|
||||
|
||||
ATA_DEV_UNKNOWN = 0, /* unknown device */
|
||||
ATA_DEV_ATA = 1, /* ATA device */
|
||||
--
|
||||
1.7.6.5
|
||||
|
@ -1,10 +0,0 @@
|
||||
--- a/drivers/gpu/drm/drm_vm.c
|
||||
+++ b/drivers/gpu/drm/drm_vm.c
|
||||
@@ -422,6 +422,7 @@ void drm_vm_open_locked(struct drm_device *dev,
|
||||
list_add(&vma_entry->head, &dev->vmalist);
|
||||
}
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(drm_vm_open_locked);
|
||||
|
||||
static void drm_vm_open(struct vm_area_struct *vma)
|
||||
{
|
@ -1,17 +0,0 @@
|
||||
diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c
|
||||
index 251e45d..fbe0f3a 100644
|
||||
--- a/drivers/clk/clk.c
|
||||
+++ b/drivers/clk/clk.c
|
||||
@@ -259,10 +259,11 @@ late_initcall(clk_disable_unused);
|
||||
|
||||
/*** helper functions ***/
|
||||
|
||||
-inline const char *__clk_get_name(struct clk *clk)
|
||||
+const char *__clk_get_name(struct clk *clk)
|
||||
{
|
||||
return !clk ? NULL : clk->name;
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(__clk_get_name);
|
||||
|
||||
inline struct clk_hw *__clk_get_hw(struct clk *clk)
|
||||
{
|
File diff suppressed because it is too large
Load Diff
71
kernel-4.14.1-x86-uaccess-static-inline-set_fs.patch
Normal file
71
kernel-4.14.1-x86-uaccess-static-inline-set_fs.patch
Normal file
@ -0,0 +1,71 @@
|
||||
From 5ea0727b163cb5575e36397a12eade68a1f35f24 Mon Sep 17 00:00:00 2001
|
||||
From: Thomas Garnier <thgarnie@google.com>
|
||||
Date: Wed, 14 Jun 2017 18:12:01 -0700
|
||||
Subject: x86/syscalls: Check address limit on user-mode return
|
||||
|
||||
Ensure the address limit is a user-mode segment before returning to
|
||||
user-mode. Otherwise a process can corrupt kernel-mode memory and elevate
|
||||
privileges [1].
|
||||
|
||||
The set_fs function sets the TIF_SETFS flag to force a slow path on
|
||||
return. In the slow path, the address limit is checked to be USER_DS if
|
||||
needed.
|
||||
|
||||
The addr_limit_user_check function is added as a cross-architecture
|
||||
function to check the address limit.
|
||||
|
||||
[1] https://bugs.chromium.org/p/project-zero/issues/detail?id=990
|
||||
|
||||
Signed-off-by: Thomas Garnier <thgarnie@google.com>
|
||||
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
|
||||
Cc: Mark Rutland <mark.rutland@arm.com>
|
||||
Cc: kernel-hardening@lists.openwall.com
|
||||
Cc: Catalin Marinas <catalin.marinas@arm.com>
|
||||
Cc: Will Deacon <will.deacon@arm.com>
|
||||
Cc: David Howells <dhowells@redhat.com>
|
||||
Cc: Dave Hansen <dave.hansen@intel.com>
|
||||
Cc: Miroslav Benes <mbenes@suse.cz>
|
||||
Cc: Chris Metcalf <cmetcalf@mellanox.com>
|
||||
Cc: Pratyush Anand <panand@redhat.com>
|
||||
Cc: Russell King <linux@armlinux.org.uk>
|
||||
Cc: Petr Mladek <pmladek@suse.com>
|
||||
Cc: Rik van Riel <riel@redhat.com>
|
||||
Cc: Kees Cook <keescook@chromium.org>
|
||||
Cc: Arnd Bergmann <arnd@arndb.de>
|
||||
Cc: Al Viro <viro@zeniv.linux.org.uk>
|
||||
Cc: Andy Lutomirski <luto@kernel.org>
|
||||
Cc: Josh Poimboeuf <jpoimboe@redhat.com>
|
||||
Cc: linux-arm-kernel@lists.infradead.org
|
||||
Cc: Will Drewry <wad@chromium.org>
|
||||
Cc: linux-api@vger.kernel.org
|
||||
Cc: Oleg Nesterov <oleg@redhat.com>
|
||||
Cc: Andy Lutomirski <luto@amacapital.net>
|
||||
Cc: Paolo Bonzini <pbonzini@redhat.com>
|
||||
Link: http://lkml.kernel.org/r/20170615011203.144108-1-thgarnie@google.com
|
||||
---
|
||||
arch/x86/include/asm/uaccess.h | 7 ++++++-
|
||||
1 file changed, 6 insertions(+), 1 deletion(-)
|
||||
|
||||
(limited to 'arch/x86/include/asm/uaccess.h')
|
||||
|
||||
diff --git a/arch/x86/include/asm/uaccess.h b/arch/x86/include/asm/uaccess.h
|
||||
index a059aac..11433f9 100644
|
||||
--- a/arch/x86/include/asm/uaccess.h
|
||||
+++ b/arch/x86/include/asm/uaccess.h
|
||||
@@ -26,7 +26,12 @@
|
||||
|
||||
#define get_ds() (KERNEL_DS)
|
||||
#define get_fs() (current->thread.addr_limit)
|
||||
-#define set_fs(x) (current->thread.addr_limit = (x))
|
||||
+static inline void set_fs(mm_segment_t fs)
|
||||
+{
|
||||
+ current->thread.addr_limit = fs;
|
||||
+ /* On user-mode return, check fs is correct */
|
||||
+ set_thread_flag(TIF_FSCHECK);
|
||||
+}
|
||||
|
||||
#define segment_eq(a, b) ((a).seg == (b).seg)
|
||||
|
||||
--
|
||||
cgit v1.1
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,377 @@
|
||||
We added acpi_gpiochip_pin_to_gpio_offset() because there was a need to
|
||||
translate from ACPI GpioIo/GpioInt number to Linux GPIO number in the
|
||||
Cherryview pinctrl driver. This translation is necessary because
|
||||
Cherryview has gaps in the pin list and the driver used continuous GPIO
|
||||
number space in Linux side as follows:
|
||||
|
||||
created GPIO range 0->7 ==> INT33FF:03 PIN 0->7
|
||||
created GPIO range 8->19 ==> INT33FF:03 PIN 15->26
|
||||
created GPIO range 20->25 ==> INT33FF:03 PIN 30->35
|
||||
created GPIO range 26->33 ==> INT33FF:03 PIN 45->52
|
||||
created GPIO range 34->43 ==> INT33FF:03 PIN 60->69
|
||||
created GPIO range 44->54 ==> INT33FF:03 PIN 75->85
|
||||
|
||||
For example when ACPI GpioInt resource refers to GPIO 81 (SDMMC3_CD_B)
|
||||
we translate from pin 81 to the corresponding Linux GPIO number, which
|
||||
is 50. This number is then used when the GPIO is accessed through gpiolib.
|
||||
|
||||
It turns out, this is not necessary at all. We can just pass 1:1 mapping
|
||||
between Linux GPIO numbers and pin numbers (including gaps) and the
|
||||
pinctrl core handles all the details automatically:
|
||||
|
||||
created GPIO range 0->7 ==> INT33FF:03 PIN 0->7
|
||||
created GPIO range 15->26 ==> INT33FF:03 PIN 15->26
|
||||
created GPIO range 30->35 ==> INT33FF:03 PIN 30->35
|
||||
created GPIO range 45->52 ==> INT33FF:03 PIN 45->52
|
||||
created GPIO range 60->69 ==> INT33FF:03 PIN 60->69
|
||||
created GPIO range 75->85 ==> INT33FF:03 PIN 75->85
|
||||
|
||||
Here GPIO 81 is exactly same than the hardware pin 81 (SDMMC3_CD_B).
|
||||
|
||||
As an added bonus this simplifies both the ACPI GPIO core code and the
|
||||
Cherryview pinctrl driver.
|
||||
|
||||
Signed-off-by: Mika Westerberg <mika.westerberg@xxxxxxxxxxxxxxx>
|
||||
---
|
||||
drivers/gpio/gpiolib-acpi.c | 75 +-----------------------------
|
||||
drivers/pinctrl/intel/pinctrl-cherryview.c | 59 ++++++++---------------
|
||||
2 files changed, 22 insertions(+), 112 deletions(-)
|
||||
|
||||
diff --git a/drivers/gpio/gpiolib-acpi.c b/drivers/gpio/gpiolib-acpi.c
|
||||
index eb4528c87c0b..b77c544bf7e2 100644
|
||||
--- a/drivers/gpio/gpiolib-acpi.c
|
||||
+++ b/drivers/gpio/gpiolib-acpi.c
|
||||
@@ -58,58 +58,6 @@ static int acpi_gpiochip_find(struct gpio_chip *gc, void *data)
|
||||
return ACPI_HANDLE(gc->parent) == data;
|
||||
}
|
||||
|
||||
-#ifdef CONFIG_PINCTRL
|
||||
-/**
|
||||
- * acpi_gpiochip_pin_to_gpio_offset() - translates ACPI GPIO to Linux GPIO
|
||||
- * @gdev: GPIO device
|
||||
- * @pin: ACPI GPIO pin number from GpioIo/GpioInt resource
|
||||
- *
|
||||
- * Function takes ACPI GpioIo/GpioInt pin number as a parameter and
|
||||
- * translates it to a corresponding offset suitable to be passed to a
|
||||
- * GPIO controller driver.
|
||||
- *
|
||||
- * Typically the returned offset is same as @pin, but if the GPIO
|
||||
- * controller uses pin controller and the mapping is not contiguous the
|
||||
- * offset might be different.
|
||||
- */
|
||||
-static int acpi_gpiochip_pin_to_gpio_offset(struct gpio_device *gdev, int pin)
|
||||
-{
|
||||
- struct gpio_pin_range *pin_range;
|
||||
-
|
||||
- /* If there are no ranges in this chip, use 1:1 mapping */
|
||||
- if (list_empty(&gdev->pin_ranges))
|
||||
- return pin;
|
||||
-
|
||||
- list_for_each_entry(pin_range, &gdev->pin_ranges, node) {
|
||||
- const struct pinctrl_gpio_range *range = &pin_range->range;
|
||||
- int i;
|
||||
-
|
||||
- if (range->pins) {
|
||||
- for (i = 0; i < range->npins; i++) {
|
||||
- if (range->pins[i] == pin)
|
||||
- return range->base + i - gdev->base;
|
||||
- }
|
||||
- } else {
|
||||
- if (pin >= range->pin_base &&
|
||||
- pin < range->pin_base + range->npins) {
|
||||
- unsigned gpio_base;
|
||||
-
|
||||
- gpio_base = range->base - gdev->base;
|
||||
- return gpio_base + pin - range->pin_base;
|
||||
- }
|
||||
- }
|
||||
- }
|
||||
-
|
||||
- return -EINVAL;
|
||||
-}
|
||||
-#else
|
||||
-static inline int acpi_gpiochip_pin_to_gpio_offset(struct gpio_device *gdev,
|
||||
- int pin)
|
||||
-{
|
||||
- return pin;
|
||||
-}
|
||||
-#endif
|
||||
-
|
||||
/**
|
||||
* acpi_get_gpiod() - Translate ACPI GPIO pin to GPIO descriptor usable with GPIO API
|
||||
* @path: ACPI GPIO controller full path name, (e.g. "\\_SB.GPO1")
|
||||
@@ -125,7 +73,6 @@ static struct gpio_desc *acpi_get_gpiod(char *path, int pin)
|
||||
struct gpio_chip *chip;
|
||||
acpi_handle handle;
|
||||
acpi_status status;
|
||||
- int offset;
|
||||
|
||||
status = acpi_get_handle(NULL, path, &handle);
|
||||
if (ACPI_FAILURE(status))
|
||||
@@ -135,11 +82,7 @@ static struct gpio_desc *acpi_get_gpiod(char *path, int pin)
|
||||
if (!chip)
|
||||
return ERR_PTR(-EPROBE_DEFER);
|
||||
|
||||
- offset = acpi_gpiochip_pin_to_gpio_offset(chip->gpiodev, pin);
|
||||
- if (offset < 0)
|
||||
- return ERR_PTR(offset);
|
||||
-
|
||||
- return gpiochip_get_desc(chip, offset);
|
||||
+ return gpiochip_get_desc(chip, pin);
|
||||
}
|
||||
|
||||
static irqreturn_t acpi_gpio_irq_handler(int irq, void *data)
|
||||
@@ -216,10 +159,6 @@ static acpi_status acpi_gpiochip_request_interrupt(struct acpi_resource *ares,
|
||||
if (!handler)
|
||||
return AE_OK;
|
||||
|
||||
- pin = acpi_gpiochip_pin_to_gpio_offset(chip->gpiodev, pin);
|
||||
- if (pin < 0)
|
||||
- return AE_BAD_PARAMETER;
|
||||
-
|
||||
desc = gpiochip_request_own_desc(chip, pin, "ACPI:Event");
|
||||
if (IS_ERR(desc)) {
|
||||
dev_err(chip->parent, "Failed to request GPIO\n");
|
||||
@@ -852,12 +791,6 @@ acpi_gpio_adr_space_handler(u32 function, acpi_physical_address address,
|
||||
struct gpio_desc *desc;
|
||||
bool found;
|
||||
|
||||
- pin = acpi_gpiochip_pin_to_gpio_offset(chip->gpiodev, pin);
|
||||
- if (pin < 0) {
|
||||
- status = AE_BAD_PARAMETER;
|
||||
- goto out;
|
||||
- }
|
||||
-
|
||||
mutex_lock(&achip->conn_lock);
|
||||
|
||||
found = false;
|
||||
@@ -990,11 +923,7 @@ static struct gpio_desc *acpi_gpiochip_parse_own_gpio(
|
||||
if (ret < 0)
|
||||
return ERR_PTR(ret);
|
||||
|
||||
- ret = acpi_gpiochip_pin_to_gpio_offset(chip->gpiodev, gpios[0]);
|
||||
- if (ret < 0)
|
||||
- return ERR_PTR(ret);
|
||||
-
|
||||
- desc = gpiochip_get_desc(chip, ret);
|
||||
+ desc = gpiochip_get_desc(chip, gpios[0]);
|
||||
if (IS_ERR(desc))
|
||||
return desc;
|
||||
|
||||
--- kernel-4.14.7mamba-x86_64/drivers/pinctrl/intel/pinctrl-cherryview.c.orig 2017-12-17 15:08:14.000000000 +0100
|
||||
+++ kernel-4.14.7mamba-x86_64/drivers/pinctrl/intel/pinctrl-cherryview.c 2017-12-20 00:27:52.151288530 +0100
|
||||
@@ -131,10 +131,8 @@
|
||||
* @ngroups: Number of groups
|
||||
* @functions: All functions in this community
|
||||
* @nfunctions: Number of functions
|
||||
- * @ngpios: Number of GPIOs in this community
|
||||
* @gpio_ranges: An array of GPIO ranges in this community
|
||||
* @ngpio_ranges: Number of GPIO ranges
|
||||
- * @ngpios: Total number of GPIOs in this community
|
||||
* @nirqs: Total number of IRQs this community can generate
|
||||
*/
|
||||
struct chv_community {
|
||||
@@ -147,7 +145,6 @@
|
||||
size_t nfunctions;
|
||||
const struct chv_gpio_pinrange *gpio_ranges;
|
||||
size_t ngpio_ranges;
|
||||
- size_t ngpios;
|
||||
size_t nirqs;
|
||||
acpi_adr_space_type acpi_space_id;
|
||||
};
|
||||
@@ -399,7 +396,6 @@
|
||||
.nfunctions = ARRAY_SIZE(southwest_functions),
|
||||
.gpio_ranges = southwest_gpio_ranges,
|
||||
.ngpio_ranges = ARRAY_SIZE(southwest_gpio_ranges),
|
||||
- .ngpios = ARRAY_SIZE(southwest_pins),
|
||||
/*
|
||||
* Southwest community can benerate GPIO interrupts only for the
|
||||
* first 8 interrupts. The upper half (8-15) can only be used to
|
||||
@@ -489,7 +485,6 @@
|
||||
.npins = ARRAY_SIZE(north_pins),
|
||||
.gpio_ranges = north_gpio_ranges,
|
||||
.ngpio_ranges = ARRAY_SIZE(north_gpio_ranges),
|
||||
- .ngpios = ARRAY_SIZE(north_pins),
|
||||
/*
|
||||
* North community can benerate GPIO interrupts only for the first
|
||||
* 8 interrupts. The upper half (8-15) can only be used to trigger
|
||||
@@ -538,7 +533,6 @@
|
||||
.npins = ARRAY_SIZE(east_pins),
|
||||
.gpio_ranges = east_gpio_ranges,
|
||||
.ngpio_ranges = ARRAY_SIZE(east_gpio_ranges),
|
||||
- .ngpios = ARRAY_SIZE(east_pins),
|
||||
.nirqs = 16,
|
||||
.acpi_space_id = 0x93,
|
||||
};
|
||||
@@ -665,7 +659,6 @@
|
||||
.nfunctions = ARRAY_SIZE(southeast_functions),
|
||||
.gpio_ranges = southeast_gpio_ranges,
|
||||
.ngpio_ranges = ARRAY_SIZE(southeast_gpio_ranges),
|
||||
- .ngpios = ARRAY_SIZE(southeast_pins),
|
||||
.nirqs = 16,
|
||||
.acpi_space_id = 0x94,
|
||||
};
|
||||
@@ -1253,21 +1246,14 @@
|
||||
.owner = THIS_MODULE,
|
||||
};
|
||||
|
||||
-static unsigned chv_gpio_offset_to_pin(struct chv_pinctrl *pctrl,
|
||||
- unsigned offset)
|
||||
-{
|
||||
- return pctrl->community->pins[offset].number;
|
||||
-}
|
||||
-
|
||||
static int chv_gpio_get(struct gpio_chip *chip, unsigned offset)
|
||||
{
|
||||
struct chv_pinctrl *pctrl = gpiochip_get_data(chip);
|
||||
- int pin = chv_gpio_offset_to_pin(pctrl, offset);
|
||||
unsigned long flags;
|
||||
u32 ctrl0, cfg;
|
||||
|
||||
raw_spin_lock_irqsave(&chv_lock, flags);
|
||||
- ctrl0 = readl(chv_padreg(pctrl, pin, CHV_PADCTRL0));
|
||||
+ ctrl0 = readl(chv_padreg(pctrl, offset, CHV_PADCTRL0));
|
||||
raw_spin_unlock_irqrestore(&chv_lock, flags);
|
||||
|
||||
cfg = ctrl0 & CHV_PADCTRL0_GPIOCFG_MASK;
|
||||
@@ -1281,14 +1267,13 @@
|
||||
static void chv_gpio_set(struct gpio_chip *chip, unsigned offset, int value)
|
||||
{
|
||||
struct chv_pinctrl *pctrl = gpiochip_get_data(chip);
|
||||
- unsigned pin = chv_gpio_offset_to_pin(pctrl, offset);
|
||||
unsigned long flags;
|
||||
void __iomem *reg;
|
||||
u32 ctrl0;
|
||||
|
||||
raw_spin_lock_irqsave(&chv_lock, flags);
|
||||
|
||||
- reg = chv_padreg(pctrl, pin, CHV_PADCTRL0);
|
||||
+ reg = chv_padreg(pctrl, offset, CHV_PADCTRL0);
|
||||
ctrl0 = readl(reg);
|
||||
|
||||
if (value)
|
||||
@@ -1304,12 +1289,11 @@
|
||||
static int chv_gpio_get_direction(struct gpio_chip *chip, unsigned offset)
|
||||
{
|
||||
struct chv_pinctrl *pctrl = gpiochip_get_data(chip);
|
||||
- unsigned pin = chv_gpio_offset_to_pin(pctrl, offset);
|
||||
u32 ctrl0, direction;
|
||||
unsigned long flags;
|
||||
|
||||
raw_spin_lock_irqsave(&chv_lock, flags);
|
||||
- ctrl0 = readl(chv_padreg(pctrl, pin, CHV_PADCTRL0));
|
||||
+ ctrl0 = readl(chv_padreg(pctrl, offset, CHV_PADCTRL0));
|
||||
raw_spin_unlock_irqrestore(&chv_lock, flags);
|
||||
|
||||
direction = ctrl0 & CHV_PADCTRL0_GPIOCFG_MASK;
|
||||
@@ -1345,7 +1329,7 @@
|
||||
{
|
||||
struct gpio_chip *gc = irq_data_get_irq_chip_data(d);
|
||||
struct chv_pinctrl *pctrl = gpiochip_get_data(gc);
|
||||
- int pin = chv_gpio_offset_to_pin(pctrl, irqd_to_hwirq(d));
|
||||
+ int pin = irqd_to_hwirq(d);
|
||||
u32 intr_line;
|
||||
|
||||
raw_spin_lock(&chv_lock);
|
||||
@@ -1362,7 +1346,7 @@
|
||||
{
|
||||
struct gpio_chip *gc = irq_data_get_irq_chip_data(d);
|
||||
struct chv_pinctrl *pctrl = gpiochip_get_data(gc);
|
||||
- int pin = chv_gpio_offset_to_pin(pctrl, irqd_to_hwirq(d));
|
||||
+ int pin = irqd_to_hwirq(d);
|
||||
u32 value, intr_line;
|
||||
unsigned long flags;
|
||||
|
||||
@@ -1407,8 +1391,7 @@
|
||||
if (irqd_get_trigger_type(d) == IRQ_TYPE_NONE) {
|
||||
struct gpio_chip *gc = irq_data_get_irq_chip_data(d);
|
||||
struct chv_pinctrl *pctrl = gpiochip_get_data(gc);
|
||||
- unsigned offset = irqd_to_hwirq(d);
|
||||
- int pin = chv_gpio_offset_to_pin(pctrl, offset);
|
||||
+ unsigned pin = irqd_to_hwirq(d);
|
||||
irq_flow_handler_t handler;
|
||||
unsigned long flags;
|
||||
u32 intsel, value;
|
||||
@@ -1426,7 +1409,7 @@
|
||||
|
||||
if (!pctrl->intr_lines[intsel]) {
|
||||
irq_set_handler_locked(d, handler);
|
||||
- pctrl->intr_lines[intsel] = offset;
|
||||
+ pctrl->intr_lines[intsel] = pin;
|
||||
}
|
||||
raw_spin_unlock_irqrestore(&chv_lock, flags);
|
||||
}
|
||||
@@ -1439,8 +1422,7 @@
|
||||
{
|
||||
struct gpio_chip *gc = irq_data_get_irq_chip_data(d);
|
||||
struct chv_pinctrl *pctrl = gpiochip_get_data(gc);
|
||||
- unsigned offset = irqd_to_hwirq(d);
|
||||
- int pin = chv_gpio_offset_to_pin(pctrl, offset);
|
||||
+ unsigned pin = irqd_to_hwirq(d);
|
||||
unsigned long flags;
|
||||
u32 value;
|
||||
|
||||
@@ -1486,7 +1468,7 @@
|
||||
value &= CHV_PADCTRL0_INTSEL_MASK;
|
||||
value >>= CHV_PADCTRL0_INTSEL_SHIFT;
|
||||
|
||||
- pctrl->intr_lines[value] = offset;
|
||||
+ pctrl->intr_lines[value] = pin;
|
||||
|
||||
if (type & IRQ_TYPE_EDGE_BOTH)
|
||||
irq_set_handler_locked(d, handle_edge_irq);
|
||||
@@ -1576,12 +1558,12 @@
|
||||
const struct chv_gpio_pinrange *range;
|
||||
struct gpio_chip *chip = &pctrl->chip;
|
||||
bool need_valid_mask = !dmi_check_system(chv_no_valid_mask);
|
||||
- int ret, i, offset;
|
||||
- int irq_base;
|
||||
+ const struct chv_community *community = pctrl->community;
|
||||
+ int ret, i, irq_base;
|
||||
|
||||
*chip = chv_gpio_chip;
|
||||
|
||||
- chip->ngpio = pctrl->community->ngpios;
|
||||
+ chip->ngpio = community->pins[community->npins - 1].number + 1;
|
||||
chip->label = dev_name(pctrl->dev);
|
||||
chip->parent = pctrl->dev;
|
||||
chip->base = -1;
|
||||
@@ -1593,30 +1575,29 @@
|
||||
return ret;
|
||||
}
|
||||
|
||||
- for (i = 0, offset = 0; i < pctrl->community->ngpio_ranges; i++) {
|
||||
- range = &pctrl->community->gpio_ranges[i];
|
||||
- ret = gpiochip_add_pin_range(chip, dev_name(pctrl->dev), offset,
|
||||
- range->base, range->npins);
|
||||
+ for (i = 0; i < community->ngpio_ranges; i++) {
|
||||
+ range = &community->gpio_ranges[i];
|
||||
+ ret = gpiochip_add_pin_range(chip, dev_name(pctrl->dev),
|
||||
+ range->base, range->base,
|
||||
+ range->npins);
|
||||
if (ret) {
|
||||
dev_err(pctrl->dev, "failed to add GPIO pin range\n");
|
||||
return ret;
|
||||
}
|
||||
-
|
||||
- offset += range->npins;
|
||||
}
|
||||
|
||||
/* Do not add GPIOs that can only generate GPEs to the IRQ domain */
|
||||
- for (i = 0; i < pctrl->community->npins; i++) {
|
||||
+ for (i = 0; i < community->npins; i++) {
|
||||
const struct pinctrl_pin_desc *desc;
|
||||
u32 intsel;
|
||||
|
||||
- desc = &pctrl->community->pins[i];
|
||||
+ desc = &community->pins[i];
|
||||
|
||||
intsel = readl(chv_padreg(pctrl, desc->number, CHV_PADCTRL0));
|
||||
intsel &= CHV_PADCTRL0_INTSEL_MASK;
|
||||
intsel >>= CHV_PADCTRL0_INTSEL_SHIFT;
|
||||
|
||||
- if (need_valid_mask && intsel >= pctrl->community->nirqs)
|
||||
+ if (need_valid_mask && intsel >= community->nirqs)
|
||||
clear_bit(i, chip->irq_valid_mask);
|
||||
}
|
||||
|
@ -1,79 +0,0 @@
|
||||
@@ -, +, @@
|
||||
---
|
||||
drivers/net/wireless/realtek/rtlwifi/core.c | 44 +++++++++++++++++++++--------
|
||||
1 file changed, 32 insertions(+), 12 deletions(-)
|
||||
--- a/drivers/net/wireless/realtek/rtlwifi/core.c
|
||||
+++ a/drivers/net/wireless/realtek/rtlwifi/core.c
|
||||
@@ -54,39 +54,59 @@ EXPORT_SYMBOL(channel5g_80m);
|
||||
void rtl_addr_delay(u32 addr)
|
||||
{
|
||||
if (addr == 0xfe)
|
||||
- msleep(50);
|
||||
+ mdelay(50);
|
||||
else if (addr == 0xfd)
|
||||
- msleep(5);
|
||||
+ mdelay(5);
|
||||
else if (addr == 0xfc)
|
||||
- msleep(1);
|
||||
+ mdelay(1);
|
||||
else if (addr == 0xfb)
|
||||
- usleep_range(50, 100);
|
||||
+ udelay(50);
|
||||
else if (addr == 0xfa)
|
||||
- usleep_range(5, 10);
|
||||
+ udelay(5);
|
||||
else if (addr == 0xf9)
|
||||
- usleep_range(1, 2);
|
||||
+ udelay(1);
|
||||
}
|
||||
EXPORT_SYMBOL(rtl_addr_delay);
|
||||
|
||||
void rtl_rfreg_delay(struct ieee80211_hw *hw, enum radio_path rfpath, u32 addr,
|
||||
u32 mask, u32 data)
|
||||
{
|
||||
- if (addr >= 0xf9 && addr <= 0xfe) {
|
||||
- rtl_addr_delay(addr);
|
||||
+ if (addr == 0xfe) {
|
||||
+ mdelay(50);
|
||||
+ } else if (addr == 0xfd) {
|
||||
+ mdelay(5);
|
||||
+ } else if (addr == 0xfc) {
|
||||
+ mdelay(1);
|
||||
+ } else if (addr == 0xfb) {
|
||||
+ udelay(50);
|
||||
+ } else if (addr == 0xfa) {
|
||||
+ udelay(5);
|
||||
+ } else if (addr == 0xf9) {
|
||||
+ udelay(1);
|
||||
} else {
|
||||
rtl_set_rfreg(hw, rfpath, addr, mask, data);
|
||||
- usleep_range(1, 2);
|
||||
+ udelay(1);
|
||||
}
|
||||
}
|
||||
EXPORT_SYMBOL(rtl_rfreg_delay);
|
||||
|
||||
void rtl_bb_delay(struct ieee80211_hw *hw, u32 addr, u32 data)
|
||||
{
|
||||
- if (addr >= 0xf9 && addr <= 0xfe) {
|
||||
- rtl_addr_delay(addr);
|
||||
+ if (addr == 0xfe) {
|
||||
+ mdelay(50);
|
||||
+ } else if (addr == 0xfd) {
|
||||
+ mdelay(5);
|
||||
+ } else if (addr == 0xfc) {
|
||||
+ mdelay(1);
|
||||
+ } else if (addr == 0xfb) {
|
||||
+ udelay(50);
|
||||
+ } else if (addr == 0xfa) {
|
||||
+ udelay(5);
|
||||
+ } else if (addr == 0xf9) {
|
||||
+ udelay(1);
|
||||
} else {
|
||||
rtl_set_bbreg(hw, addr, MASKDWORD, data);
|
||||
- usleep_range(1, 2);
|
||||
+ udelay(1);
|
||||
}
|
||||
}
|
||||
EXPORT_SYMBOL(rtl_bb_delay);
|
||||
--
|
71
kernel-baytrail-4.9.9-pwm-lpss.patch
Normal file
71
kernel-baytrail-4.9.9-pwm-lpss.patch
Normal file
@ -0,0 +1,71 @@
|
||||
diff --git a/drivers/pwm/Kconfig b/drivers/pwm/Kconfig
|
||||
index bf01288..cda31ea 100644
|
||||
--- a/drivers/pwm/Kconfig
|
||||
+++ b/drivers/pwm/Kconfig
|
||||
@@ -240,28 +240,22 @@ config PWM_LPC32XX
|
||||
will be called pwm-lpc32xx.
|
||||
|
||||
config PWM_LPSS
|
||||
- tristate
|
||||
+ bool
|
||||
|
||||
config PWM_LPSS_PCI
|
||||
- tristate "Intel LPSS PWM PCI driver"
|
||||
+ bool "Intel LPSS PWM PCI driver"
|
||||
depends on X86 && PCI
|
||||
select PWM_LPSS
|
||||
help
|
||||
The PCI driver for Intel Low Power Subsystem PWM controller.
|
||||
|
||||
- To compile this driver as a module, choose M here: the module
|
||||
- will be called pwm-lpss-pci.
|
||||
-
|
||||
config PWM_LPSS_PLATFORM
|
||||
- tristate "Intel LPSS PWM platform driver"
|
||||
+ bool "Intel LPSS PWM platform driver"
|
||||
depends on X86 && ACPI
|
||||
select PWM_LPSS
|
||||
help
|
||||
The platform driver for Intel Low Power Subsystem PWM controller.
|
||||
|
||||
- To compile this driver as a module, choose M here: the module
|
||||
- will be called pwm-lpss-platform.
|
||||
-
|
||||
config PWM_MESON
|
||||
tristate "Amlogic Meson PWM driver"
|
||||
depends on ARCH_MESON
|
||||
diff --git a/drivers/pwm/pwm-lpss.c b/drivers/pwm/pwm-lpss.c
|
||||
index 72c0bce..b4d8835 100644
|
||||
--- a/drivers/pwm/pwm-lpss.c
|
||||
+++ b/drivers/pwm/pwm-lpss.c
|
||||
@@ -161,6 +161,12 @@ static const struct pwm_ops pwm_lpss_ops = {
|
||||
.owner = THIS_MODULE,
|
||||
};
|
||||
|
||||
+/* PWM consumed by the Intel GFX */
|
||||
+static struct pwm_lookup pwm_lpss_lookup[] = {
|
||||
+ PWM_LOOKUP("pwm-lpss", 0, "0000:00:02.0", "pwm_backlight", 0,
|
||||
+ PWM_POLARITY_NORMAL),
|
||||
+};
|
||||
+
|
||||
struct pwm_lpss_chip *pwm_lpss_probe(struct device *dev, struct resource *r,
|
||||
const struct pwm_lpss_boardinfo *info)
|
||||
{
|
||||
@@ -193,12 +199,17 @@ struct pwm_lpss_chip *pwm_lpss_probe(struct device *dev, struct resource *r,
|
||||
return ERR_PTR(ret);
|
||||
}
|
||||
|
||||
+ /* Add lookup table for pwm_backlight */
|
||||
+ pwm_lpss_lookup[0].provider = dev_name(dev);
|
||||
+ pwm_add_table(pwm_lpss_lookup, ARRAY_SIZE(pwm_lpss_lookup));
|
||||
+
|
||||
return lpwm;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(pwm_lpss_probe);
|
||||
|
||||
int pwm_lpss_remove(struct pwm_lpss_chip *lpwm)
|
||||
{
|
||||
+ pwm_remove_table(pwm_lpss_lookup, ARRAY_SIZE(pwm_lpss_lookup));
|
||||
return pwmchip_remove(&lpwm->chip);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(pwm_lpss_remove);
|
320
kernel.spec
320
kernel.spec
@ -1,5 +1,5 @@
|
||||
# openmamba kernel specfile
|
||||
# Copyright (C) 2004-2016 by Silvan Calarco
|
||||
# Copyright (C) 2004-2018 by Silvan Calarco
|
||||
# Copyright (C) 2004-2006 by Davide Madrisan
|
||||
# released under the GPL version 3 license
|
||||
#
|
||||
@ -9,19 +9,6 @@
|
||||
#
|
||||
# To cross-compile:
|
||||
# rpmbuild -ba --target x86_64 --define="KERNEL_TARGET <target>" kernel.spec
|
||||
#
|
||||
# currently available targets (default is mamba):
|
||||
# mamba,rt,custom
|
||||
#
|
||||
# NOTE: to allow multiple kernel major releases (3.x) cohexistence all patches releases
|
||||
# have to be explicitly obsoletes, by adding such lines:
|
||||
# Obsoletes: kernel-%{KERNEL_TARGET}-source = %{kernel_ver}.1
|
||||
# ...
|
||||
# Obsoletes: kernel-%{KERNEL_TARGET}-source = %{kernel_ver}.10
|
||||
|
||||
# Don't parametrize this, it's a check to avoid build a kernel without having
|
||||
# edited the obsoletes needed for multiple kernel support
|
||||
#%define KERNEL_OBSOLETES_ARE_FOR_VERSION 4.9.47
|
||||
|
||||
#% define kernel_longterm 1
|
||||
%define kernel_MAJver %(echo %version | cut -d. -f1)
|
||||
@ -87,8 +74,8 @@
|
||||
%define _use_internal_dependency_generator 1
|
||||
|
||||
Name: kernel
|
||||
Version: 4.9.71
|
||||
Release: 1mamba
|
||||
Version: 4.14.13
|
||||
Release: 2mamba
|
||||
Summary: The Linux Kernel, the operating system core itself
|
||||
Group: System/Kernel and Hardware
|
||||
Vendor: openmamba
|
||||
@ -103,33 +90,16 @@ Source0: https://cdn.kernel.org/pub/linux/kernel/v%{kernel_MAJver}.x/linux
|
||||
#Source0: http://www.kernel.org/pub/linux/kernel/v2.6/longterm/v%{kernel_ver}/linux-%{version}.tar.bz2
|
||||
#%endif
|
||||
Source7: %{name}-rt-i586-config
|
||||
#Source8: %{name}-%{kernel_majver}-mamba-ppc-config
|
||||
Source9: %{name}-custom-i586-config
|
||||
Source11: %{name}-%{kernel_majver}-mamba-config
|
||||
Source12: %{name}-%{kernel_majver}-mamba-x86_64-config
|
||||
Source13: %{name}-%{kernel_majver}-mamba-64GB-config
|
||||
#Source14: %{name}-%{kernel_majver}-mamba-xen-x86_64-config
|
||||
Source11: %{name}-%{kernel_majver}.13-mamba-config
|
||||
Source12: %{name}-%{kernel_majver}.12-mamba-x86_64-config
|
||||
Source13: %{name}-%{kernel_majver}.13-mamba-64GB-config
|
||||
Source15: %{name}-%{kernel_majver}-mamba-arm-config
|
||||
#Source16: %{name}-%{kernel_majver}-mamba-64GB-rt-i586-config
|
||||
#Source17: %{name}-%{kernel_majver}-mamba-rt-i586-config
|
||||
#Source18: %{name}-%{kernel_majver}-mamba-arm-kirkwood-config
|
||||
#Source19: %{name}-%{kernel_majver}-mamba-x86_64-rt-config
|
||||
Source20: %{name}-%{kernel_majver}-mamba-arm-dove-config
|
||||
Patch0: kernel-2.6.35-430-scsi_header_fix.patch
|
||||
# Ingo Molnar's RT patch
|
||||
Patch1: http://www.kernel.org/pub/linux/kernel/projects/rt/%{maj_rt_ver}/patch-%{rt_ver}.patch.xz
|
||||
Patch3: kernel-2.6.28.10-MSG_PEEK_race_msg.patch
|
||||
Patch4: http://www.kernel.org/pub/linux/kernel/people/edward/reiser4/reiser4-for-2.6/reiser4-for-%{reiser4_ver}.patch.bz2
|
||||
Patch11: kernel-3.2.1-8139cp.patch
|
||||
Patch18: kernel26-2.6.18-bt8xx.patch
|
||||
Patch22: kernel-2.6.20-freezer.patch
|
||||
Patch23: kernel-2.6.19-hda_snd_intel-null_pointer.patch
|
||||
Patch24: kernel-2.6.35-usbstorage-disable_delay_use.patch
|
||||
Patch25: kernel-2.6.21-VT3351_disable_msi.patch
|
||||
Patch27: kernel-2.6.21-kvm_wbinvd.patch
|
||||
Patch29: kernel-2.6.22-ppc_PM_NEEDS_RTC_LIB.patch
|
||||
Patch30: kernel-2.6.22-ppc_export_vgacon_remap_base.patch
|
||||
Patch31: kernel-2.6.26-snd_hda_intel_zepto.patch
|
||||
Patch32: kernel-2.6.26-fglrx_disable_gpl_check.patch
|
||||
Patch33: kernel-2.6.26-atl1_disable_TSO.patch
|
||||
Patch36: kernel-2.6.30-fglrx_flush_tlb_page.patch
|
||||
@ -137,45 +107,14 @@ Patch37: kernel-2.6.30-wmi_fix.patch
|
||||
#Patch38: http://gentoo-xen-kernel.googlecode.com/files/xen-patches-%{kernel_ver}-%{xen_patchver}.tar.bz2
|
||||
Patch39: kernel-3.2.1-rtl8139too.patch
|
||||
Patch40: %{name}-2.6.33-lzo_decompressor_fix.patch
|
||||
#Patch50: %{name}-2.6.33-arm-copypage-gcc4.patch
|
||||
#Patch51: %{name}-2.6.33-mcp52xx_gpt_fix_build.patch
|
||||
Patch52: %{name}-2.6.33.7-make-3.82.patch
|
||||
Patch53: %{name}-2.6.33-dns_resolve_include.patch
|
||||
Patch54: %{name}-2.6.33-fix_dependence_for_intel_agp_module.patch
|
||||
Patch55: %{name}-2.6.35-CTI_USB-485-Mini_USB-Nano-485.patch
|
||||
Patch56: %{name}-2.6.33-tpm_calc_ordinal_duration.patch
|
||||
Patch57: %{name}-2.6.35.10-drm-radeon-r600-cs-checker-fixes.patch
|
||||
Patch58: %{name}-2.6.37.1-radeon_flickering_fix.patch
|
||||
Patch59: %{name}-2.6.35-vga_dont_ask.patch
|
||||
Patch61: %{name}-3.1-arm_missing_includes.patch
|
||||
Patch62: %{name}-2.6.38.6-arm-rtlwifi-eliminate_udelay.patch
|
||||
Patch63: %{name}-3.2-elantech.patch
|
||||
Patch64: %{name}-3.0.8-suspend_fix_firmware_task_freezing_feature.patch
|
||||
Patch65: %{name}-3.0.17-mm_limit_direct_reclaim_for_higher_order_allocations.patch
|
||||
Patch66: %{name}-3.0.17_mm_abort_reclaim_compation_if_compation_can_proceed.patch
|
||||
Patch67: %{name}-3.2-arm_remove_BUILD_BUG_ON_from_bug_h.patch
|
||||
Patch68: %{name}-3.2.9-asix_sitecom_ln_031.patch
|
||||
Patch69: %{name}-3.2.16-ipw2200_fix.patch
|
||||
Patch70: %{name}-3.2-option_add_Huawey-E352.patch
|
||||
Patch71: kernel-3.7.1-libata_restore_acpi_disable_functionality.patch
|
||||
Patch72: kernel-3.4.24-ACPI_do_not_use_Lid_and_Sleep_button_for_S5_wakeup.patch
|
||||
Patch73: kernel-3.8.3-arm-exynosdrm-buildfix.patch
|
||||
Patch74: kernel-3.8.3-arm-imx-drm-buildfix.patch
|
||||
Patch75: kernel-3.10.2-arm-mtd_omap2_allow_building_as_a_module.patch
|
||||
Patch76: kernel-4.6.5-revert-rtlifi-usleep.patch
|
||||
Patch77: kernel-baytrail-4.9.9-pwm-lpss.patch
|
||||
Patch78: kernel-4.14.1-x86-uaccess-static-inline-set_fs.patch
|
||||
Patch79: kernel-4.14.7-Cherrytrail_ACPI_Drop_nnecessary_ACPI_GPIO_to_Linux_GPIO_translation.patch
|
||||
# https://dev.openwrt.org/browser/trunk/target/linux/generic/patches-3.12/100-overlayfs.patch?order=name
|
||||
Patch100: kernel-3.14.2-overlayfs.patch
|
||||
## overlayfs: get the 12 patches above Linux 3.6 tag from:
|
||||
## http://git.kernel.org/?p=linux/kernel/git/mszeredi/vfs.git;a=shortlog;h=refs/heads/overlayfs.v14
|
||||
#Patch100: 0001-vfs-add-i_op-dentry_open.patch
|
||||
#Patch101: 0002-vfs-export-do_splice_direct-to-modules.patch
|
||||
#Patch102: 0003-vfs-export-__inode_permission-to-modules.patch
|
||||
#Patch103: 0004-vfs-introduce-clone_private_mount.patch
|
||||
#Patch104: 0005-overlay-filesystem.patch
|
||||
#Patch105: 0006-overlayfs-add-statfs-support.patch
|
||||
#Patch106: 0007-overlayfs-implement-show_options.patch
|
||||
#Patch107: 0008-overlay-overlay-filesystem-documentation.patch
|
||||
#Patch108: 0009-fs-limit-filesystem-stacking-depth.patch
|
||||
URL: http://www.kernel.org
|
||||
License: GPL
|
||||
## AUTOBUILDREQ-BEGIN
|
||||
@ -221,8 +160,6 @@ Provides: kernel-%{KERNEL_TARGET}-sound = %{version}-%{release}
|
||||
|
||||
Requires: linux-firmware
|
||||
Provides: kernel = %{version}
|
||||
Obsoletes: kernel-%{KERNEL_TARGET}-sound = %{version}
|
||||
Obsoletes: kernel-%{KERNEL_TARGET}-wireless = %{version}
|
||||
|
||||
%description %{KERNEL_TARGET}
|
||||
The Linux Kernel, the operating system core itself.
|
||||
@ -274,10 +211,6 @@ Firmware files used by the Linux Kernel.
|
||||
|
||||
%prep
|
||||
[ "%{buildroot}" != / ] && rm -rf "%{buildroot}"
|
||||
#%if "%{version}" != "%{KERNEL_OBSOLETES_ARE_FOR_VERSION}"
|
||||
# echo "ERROR: please edit obsoletes for multiple kernel support before proceeding."
|
||||
# exit 1
|
||||
#%endif
|
||||
|
||||
ld -v | grep "gold" && {
|
||||
echo "Error: ld GOLD detected, which is incompatible with this package. Aborting."
|
||||
@ -392,7 +325,6 @@ cp $kernel_cfg ./.config
|
||||
# for use with proprietary ATI fglrx drivers
|
||||
#%patch32 -p1
|
||||
# reiser4 support patch
|
||||
#%patch4 -p1
|
||||
# export flushtlb_page symbol (for fglrx driver)
|
||||
%patch36 -p0
|
||||
## fixes a kernel panic with wmi when stack protector is enabled
|
||||
@ -403,23 +335,9 @@ cp $kernel_cfg ./.config
|
||||
#% patch51 -p1
|
||||
%patch53 -p1
|
||||
%patch59 -p1
|
||||
## Elantech touchpad patch generated from http://people.debian.org/~julien/lp681904/psmouse-elantech-lp681904-1.tar.bz2
|
||||
#%patch63 -p1
|
||||
#%patch73 -p1
|
||||
#%patch74 -p1
|
||||
#%patch75 -p1
|
||||
#%patch76 -p1
|
||||
|
||||
# overlayfs patches
|
||||
#%patch100 -p1
|
||||
#% patch101 -p1
|
||||
#% patch102 -p1
|
||||
#% patch103 -p1
|
||||
#% patch104 -p1
|
||||
#% patch105 -p1
|
||||
#% patch106 -p1
|
||||
#% patch107 -p1
|
||||
#% patch108 -p1
|
||||
%patch77 -p1
|
||||
%patch78 -p1 -R
|
||||
%patch79 -p1
|
||||
|
||||
%build
|
||||
#:<< ___EOF
|
||||
@ -524,57 +442,16 @@ cp %{_builddir}/%{name}-%{kernel_ver}%{?KERNEL_TARGET}/Module.symvers %{buildroo
|
||||
#sed -i "s/\(EXTRAVERSION =.*\)/\1%{?KERNEL_TARGET}/" Makefile
|
||||
#%if "%{_target_platform}" == "%{_build}"
|
||||
|
||||
%ifnarch arm
|
||||
# FIXME: problems cross-compiling and running x86_64 tools on x86; building as x86 code for now
|
||||
ARCH=%{target_cpu} make \
|
||||
HOSTCC=%{_build}-gcc \
|
||||
CROSS_COMPILE=%{_target_platform}- \
|
||||
prepare scripts oldconfig
|
||||
%else
|
||||
ARCH=%{target_cpu} make \
|
||||
CROSS_COMPILE=%{_target_platform}- \
|
||||
prepare scripts oldconfig
|
||||
%endif
|
||||
# HOSTCC=%{_target_platform}-gcc \
|
||||
|
||||
cp -a include/generated/* include/linux/
|
||||
#%endif
|
||||
rm .config.old
|
||||
|
||||
##
|
||||
## lilo configuration
|
||||
##
|
||||
#cat > %{buildroot}%{_sysconfdir}/lilo.d/openmamba-%{kernel_ver}%{?KERNEL_TARGET}-%{release} <<EOF
|
||||
#image=/boot/%{KIMAGE_DEST}-%{kernel_ver}%{?KERNEL_TARGET}
|
||||
# label="openmamba-%{KERNEL_TARGET_SHORT}"
|
||||
# root=
|
||||
# initrd=/boot/initramfs-%{kernel_ver}%{?KERNEL_TARGET}.img
|
||||
# append="quiet splash=silent,fadein console=tty1 video=uvesafb:1024x768-32,ywrap,mtrr:3"
|
||||
# read-only
|
||||
#EOF
|
||||
|
||||
##
|
||||
## grub configuration
|
||||
##
|
||||
#mkdir -p %{buildroot}%{_sysconfdir}/grub/conf.d
|
||||
#cat > %{buildroot}%{_sysconfdir}/grub/conf.d/openmamba-%{kernel_ver}%{?KERNEL_TARGET}-%{release} <<EOF
|
||||
#title openmamba (kernel %{kernel_ver}%{?KERNEL_TARGET})
|
||||
#root
|
||||
#kernel /boot/%{KIMAGE_DEST}-%{kernel_ver}%{?KERNEL_TARGET} root= video=uvesafb:1024x768-32,ywrap,mtrr:3 quiet splash=silent,fadein console=tty1
|
||||
#initrd /boot/initramfs-%{kernel_ver}%{?KERNEL_TARGET}.img
|
||||
#EOF
|
||||
|
||||
##
|
||||
## grub2 configuration
|
||||
##
|
||||
#mkdir -p %{buildroot}%{_sysconfdir}/grub2/conf.d
|
||||
#cat > %{buildroot}%{_sysconfdir}/grub2/conf.d/openmamba-%{version}%{?KERNEL_TARGET}-%{release} <<EOF
|
||||
#menuentry "openmamba (kernel %{version}%{?KERNEL_TARGET})" {
|
||||
# linux /boot/%{KIMAGE_DEST}-%{version}%{?KERNEL_TARGET} root= video=vesafb:1024x768-32,ywrap,mtrr:3 quiet splash=silent,fadein console=tty1
|
||||
# initrd /boot/initramfs-%{version}%{?KERNEL_TARGET}.img
|
||||
#}
|
||||
#EOF
|
||||
|
||||
# clean modules files created by depmod
|
||||
rm -f %{buildroot}/lib/modules/%{kernel_ver}%{?KERNEL_TARGET}/modules.{alias,alias.bin,ccwmap,dep,dep.bin,devname,ieee1394map}
|
||||
rm -f %{buildroot}/lib/modules/%{kernel_ver}%{?KERNEL_TARGET}/modules.{inputmap,isapnpmap,ofmap,pcimap,seriomap,softdep}
|
||||
@ -607,12 +484,15 @@ case %{_target_cpu} in
|
||||
esac
|
||||
|
||||
# discovered while building nvidia 304.88 for 3.10
|
||||
%ifnarch arm
|
||||
[ -e %{buildroot}%{_prefix}/src/linux-%{kernel_ver}%{?KERNEL_TARGET}/include/uapi/asm ] || \
|
||||
ln -s ../../arch/$headers_arch/include/uapi/asm \
|
||||
%{buildroot}%{_prefix}/src/linux-%{kernel_ver}%{?KERNEL_TARGET}/include/uapi/asm
|
||||
|
||||
[ -e %{buildroot}%{_prefix}/src/linux-%{kernel_ver}%{?KERNEL_TARGET}/include/asm ] || \
|
||||
ln -s ../arch/$headers_arch/include/asm include/asm
|
||||
ln -s ../arch/$headers_arch/include/asm \
|
||||
%{buildroot}%{_prefix}/src/linux-%{kernel_ver}%{?KERNEL_TARGET}/include/asm
|
||||
%endif
|
||||
|
||||
find $splitdirs -type f -name *.h -exec \
|
||||
echo "%{_prefix}/src/linux-%{kernel_ver}%{?KERNEL_TARGET}/"{} >> \
|
||||
@ -682,43 +562,6 @@ if [ $1 -gt 1 ]; then
|
||||
fi
|
||||
exit 0
|
||||
|
||||
%post %{?KERNEL_TARGET}
|
||||
# %if "%{_target_cpu}" == "i586"
|
||||
# if [ -x /sbin/lilo-config ]; then
|
||||
# /sbin/lilo-config --killdevfs
|
||||
# /sbin/lilo-config --add \
|
||||
# %{_sysconfdir}/lilo.d/openmamba-%{kernel_ver}%{?KERNEL_TARGET}-%{release}
|
||||
# /sbin/lilo
|
||||
# fi
|
||||
# %endif
|
||||
# %if "%{_target_cpu}" == "x86_64"
|
||||
# if [ -x /sbin/lilo-config ]; then
|
||||
# /sbin/lilo-config --killdevfs
|
||||
# /sbin/lilo-config --add \
|
||||
# %{_sysconfdir}/lilo.d/openmamba-%{kernel_ver}%{?KERNEL_TARGET}-%{release}
|
||||
# /sbin/lilo
|
||||
# fi
|
||||
# %endif
|
||||
|
||||
#if [ $1 -eq 0 ]; then
|
||||
## uninstalling the rpm package
|
||||
# %if "%{_target_cpu}" == "i586"
|
||||
# if [ -x /sbin/lilo-config ]; then
|
||||
# /sbin/lilo-config -q --del "openmamba-%{?KERNEL_TARGET_SHORT}"
|
||||
# /sbin/lilo
|
||||
# fi
|
||||
# %endif
|
||||
# %if "%{_target_cpu}" == "x86_64"
|
||||
# if [ -x /sbin/lilo-config ]; then
|
||||
# /sbin/lilo-config -q --del "openmamba-%{?KERNEL_TARGET_SHORT}"
|
||||
# /sbin/lilo
|
||||
# fi
|
||||
# %endif
|
||||
# :
|
||||
#fi
|
||||
|
||||
exit 0
|
||||
|
||||
%postun %{?KERNEL_TARGET}
|
||||
# erase this package
|
||||
if [ $1 -eq 0 ]; then
|
||||
@ -836,104 +679,15 @@ exit 0
|
||||
/lib/modules/%{kernel_ver}%{?KERNEL_TARGET}/kernel/net/*
|
||||
%dir /lib/modules/%{kernel_ver}%{?KERNEL_TARGET}/kernel/security
|
||||
/lib/modules/%{kernel_ver}%{?KERNEL_TARGET}/kernel/security/*
|
||||
/lib/modules/%{kernel_ver}%{?KERNEL_TARGET}/kernel/sound/soundcore.ko
|
||||
%dir /lib/modules/%{kernel_ver}%{?KERNEL_TARGET}/kernel/sound
|
||||
/lib/modules/%{kernel_ver}%{?KERNEL_TARGET}/kernel/sound
|
||||
%dir /lib/modules/%{kernel_ver}%{?KERNEL_TARGET}/kernel/virt
|
||||
/lib/modules/%{kernel_ver}%{?KERNEL_TARGET}/kernel/virt/*
|
||||
#%exclude /lib/modules/%{kernel_ver}%{?KERNEL_TARGET}/build
|
||||
#%exclude /lib/modules/%{kernel_ver}%{?KERNEL_TARGET}/source
|
||||
##%{_sysconfdir}/lilo.d/openmamba-%{kernel_ver}%{?KERNEL_TARGET}-%{release}
|
||||
##%{_sysconfdir}/grub/conf.d/openmamba-%{kernel_ver}%{?KERNEL_TARGET}-%{release}
|
||||
##%{_sysconfdir}/grub2/conf.d/openmamba-%{version}%{?KERNEL_TARGET}-%{release}
|
||||
#%exclude /lib/modules/%{kernel_ver}%{?KERNEL_TARGET}/kernel/drivers/net/usb/cdc_ether.ko
|
||||
#%exclude /lib/modules/%{kernel_ver}%{?KERNEL_TARGET}/kernel/drivers/net/usb/rndis_host.ko
|
||||
#%exclude /lib/modules/%{kernel_ver}%{?KERNEL_TARGET}/kernel/drivers/net/usb/usbnet.ko
|
||||
#%ifnarch arm
|
||||
#%exclude /lib/modules/%{kernel_ver}%{?KERNEL_TARGET}/kernel/drivers/net/wireless/admtek/adm8211.ko
|
||||
#%exclude /lib/modules/%{kernel_ver}%{?KERNEL_TARGET}/kernel/drivers/net/wireless/libertas/libertas_cs.ko
|
||||
#%endif
|
||||
##%exclude /lib/modules/%{kernel_ver}%{?KERNEL_TARGET}/kernel/drivers/net/wireless/at76_usb.ko
|
||||
##%exclude /lib/modules/%{kernel_ver}%{?KERNEL_TARGET}/kernel/drivers/net/wireless/ath5k/ath5k.ko
|
||||
##%exclude /lib/modules/%{kernel_ver}%{?KERNEL_TARGET}/kernel/drivers/net/wireless/ath9k/ath9k.ko
|
||||
#%exclude /lib/modules/%{kernel_ver}%{?KERNEL_TARGET}/kernel/drivers/net/wireless/b43/b43.ko
|
||||
#%exclude /lib/modules/%{kernel_ver}%{?KERNEL_TARGET}/kernel/drivers/net/wireless/b43legacy/b43legacy.ko
|
||||
##%exclude /lib/modules/%{kernel_ver}%{?KERNEL_TARGET}/kernel/drivers/net/wireless/iwlwifi/iwl3945.ko
|
||||
##%exclude /lib/modules/%{kernel_ver}%{?KERNEL_TARGET}/kernel/drivers/net/wireless/iwlwifi/iwlagn.ko
|
||||
##%exclude /lib/modules/%{kernel_ver}%{?KERNEL_TARGET}/kernel/drivers/net/wireless/iwlwifi/iwlcore.ko
|
||||
#%exclude /lib/modules/%{kernel_ver}%{?KERNEL_TARGET}/kernel/drivers/net/wireless/libertas/libertas.ko
|
||||
#%exclude /lib/modules/%{kernel_ver}%{?KERNEL_TARGET}/kernel/drivers/net/wireless/libertas/libertas_sdio.ko
|
||||
#%exclude /lib/modules/%{kernel_ver}%{?KERNEL_TARGET}/kernel/drivers/net/wireless/libertas_tf/libertas_tf.ko
|
||||
#%exclude /lib/modules/%{kernel_ver}%{?KERNEL_TARGET}/kernel/drivers/net/wireless/libertas_tf/libertas_tf_usb.ko
|
||||
#%exclude /lib/modules/%{kernel_ver}%{?KERNEL_TARGET}/kernel/drivers/net/wireless/libertas/usb8xxx.ko
|
||||
#%exclude /lib/modules/%{kernel_ver}%{?KERNEL_TARGET}/kernel/drivers/net/wireless/mac80211_hwsim.ko
|
||||
#%exclude /lib/modules/%{kernel_ver}%{?KERNEL_TARGET}/kernel/drivers/net/wireless/p54/p54common.ko
|
||||
#%ifnarch arm
|
||||
#%exclude /lib/modules/%{kernel_ver}%{?KERNEL_TARGET}/kernel/drivers/net/wireless/p54/p54pci.ko
|
||||
#%endif
|
||||
#%exclude /lib/modules/%{kernel_ver}%{?KERNEL_TARGET}/kernel/drivers/net/wireless/p54/p54usb.ko
|
||||
#%exclude /lib/modules/%{kernel_ver}%{?KERNEL_TARGET}/kernel/drivers/net/wireless/rndis_wlan.ko
|
||||
#%ifnarch arm
|
||||
#%exclude /lib/modules/%{kernel_ver}%{?KERNEL_TARGET}/kernel/drivers/net/wireless/rt2x00/rt2400pci.ko
|
||||
#%exclude /lib/modules/%{kernel_ver}%{?KERNEL_TARGET}/kernel/drivers/net/wireless/rt2x00/rt2500pci.ko
|
||||
#%exclude /lib/modules/%{kernel_ver}%{?KERNEL_TARGET}/kernel/drivers/net/wireless/rt2x00/rt2x00pci.ko
|
||||
#%exclude /lib/modules/%{kernel_ver}%{?KERNEL_TARGET}/kernel/drivers/net/wireless/rt2x00/rt61pci.ko
|
||||
#%endif
|
||||
#%exclude /lib/modules/%{kernel_ver}%{?KERNEL_TARGET}/kernel/drivers/net/wireless/rt2x00/rt2500usb.ko
|
||||
#%exclude /lib/modules/%{kernel_ver}%{?KERNEL_TARGET}/kernel/drivers/net/wireless/rt2x00/rt2x00lib.ko
|
||||
#%exclude /lib/modules/%{kernel_ver}%{?KERNEL_TARGET}/kernel/drivers/net/wireless/rt2x00/rt2x00usb.ko
|
||||
#%exclude /lib/modules/%{kernel_ver}%{?KERNEL_TARGET}/kernel/drivers/net/wireless/rt2x00/rt73usb.ko
|
||||
#%exclude /lib/modules/%{kernel_ver}%{?KERNEL_TARGET}/kernel/drivers/net/wireless/zd1211rw/zd1211rw.ko
|
||||
#%exclude /lib/modules/%{kernel_ver}%{?KERNEL_TARGET}/kernel/drivers/net/wireless/bcm43xx/bcm43xx.ko
|
||||
#%exclude /lib/modules/%{kernel_ver}%{?KERNEL_TARGET}/kernel/drivers/ssb/ssb.ko
|
||||
#%exclude /lib/modules/%{kernel_ver}%{?KERNEL_TARGET}/kernel/net/mac80211/mac80211.ko
|
||||
#%exclude /lib/modules/%{kernel_ver}%{?KERNEL_TARGET}/kernel/net/wireless/cfg80211.ko
|
||||
|
||||
# Sound
|
||||
/lib/modules/%{kernel_ver}%{?KERNEL_TARGET}/kernel/sound
|
||||
#%exclude /lib/modules/%{kernel_ver}%{?KERNEL_TARGET}/kernel/sound/soundcore.ko
|
||||
|
||||
# Wireless
|
||||
/lib/modules/%{kernel_ver}%{?KERNEL_TARGET}/kernel/drivers/net/usb/cdc_ether.ko
|
||||
/lib/modules/%{kernel_ver}%{?KERNEL_TARGET}/kernel/drivers/net/usb/rndis_host.ko
|
||||
/lib/modules/%{kernel_ver}%{?KERNEL_TARGET}/kernel/drivers/net/usb/usbnet.ko
|
||||
%ifnarch arm
|
||||
/lib/modules/%{kernel_ver}%{?KERNEL_TARGET}/kernel/drivers/net/wireless/admtek/adm8211.ko
|
||||
/lib/modules/%{kernel_ver}%{?KERNEL_TARGET}/kernel/drivers/net/wireless/marvell/libertas/libertas_cs.ko
|
||||
%endif
|
||||
/lib/modules/%{kernel_ver}%{?KERNEL_TARGET}/kernel/drivers/net/wireless/marvell/libertas/libertas.ko
|
||||
/lib/modules/%{kernel_ver}%{?KERNEL_TARGET}/kernel/drivers/net/wireless/marvell/libertas/libertas_sdio.ko
|
||||
/lib/modules/%{kernel_ver}%{?KERNEL_TARGET}/kernel/drivers/net/wireless/marvell/libertas_tf/libertas_tf.ko
|
||||
/lib/modules/%{kernel_ver}%{?KERNEL_TARGET}/kernel/drivers/net/wireless/marvell/libertas_tf/libertas_tf_usb.ko
|
||||
/lib/modules/%{kernel_ver}%{?KERNEL_TARGET}/kernel/drivers/net/wireless/marvell/libertas/usb8xxx.ko
|
||||
/lib/modules/%{kernel_ver}%{?KERNEL_TARGET}/kernel/drivers/net/wireless/broadcom/b43/b43.ko
|
||||
/lib/modules/%{kernel_ver}%{?KERNEL_TARGET}/kernel/drivers/net/wireless/broadcom/b43legacy/b43legacy.ko
|
||||
/lib/modules/%{kernel_ver}%{?KERNEL_TARGET}/kernel/drivers/net/wireless/mac80211_hwsim.ko
|
||||
/lib/modules/%{kernel_ver}%{?KERNEL_TARGET}/kernel/drivers/net/wireless/intersil/p54/p54common.ko
|
||||
%ifnarch arm
|
||||
/lib/modules/%{kernel_ver}%{?KERNEL_TARGET}/kernel/drivers/net/wireless/intersil/p54/p54pci.ko
|
||||
%endif
|
||||
/lib/modules/%{kernel_ver}%{?KERNEL_TARGET}/kernel/drivers/net/wireless/intersil/p54/p54usb.ko
|
||||
/lib/modules/%{kernel_ver}%{?KERNEL_TARGET}/kernel/drivers/net/wireless/rndis_wlan.ko
|
||||
/lib/modules/%{kernel_ver}%{?KERNEL_TARGET}/kernel/drivers/net/wireless/ralink/rt2x00/rt2500usb.ko
|
||||
/lib/modules/%{kernel_ver}%{?KERNEL_TARGET}/kernel/drivers/net/wireless/ralink/rt2x00/rt2x00lib.ko
|
||||
/lib/modules/%{kernel_ver}%{?KERNEL_TARGET}/kernel/drivers/net/wireless/ralink/rt2x00/rt2x00usb.ko
|
||||
/lib/modules/%{kernel_ver}%{?KERNEL_TARGET}/kernel/drivers/net/wireless/ralink/rt2x00/rt73usb.ko
|
||||
%ifnarch arm
|
||||
/lib/modules/%{kernel_ver}%{?KERNEL_TARGET}/kernel/drivers/net/wireless/ralink/rt2x00/rt2400pci.ko
|
||||
/lib/modules/%{kernel_ver}%{?KERNEL_TARGET}/kernel/drivers/net/wireless/ralink/rt2x00/rt2500pci.ko
|
||||
/lib/modules/%{kernel_ver}%{?KERNEL_TARGET}/kernel/drivers/net/wireless/ralink/rt2x00/rt2x00pci.ko
|
||||
/lib/modules/%{kernel_ver}%{?KERNEL_TARGET}/kernel/drivers/net/wireless/ralink/rt2x00/rt61pci.ko
|
||||
%endif
|
||||
/lib/modules/%{kernel_ver}%{?KERNEL_TARGET}/kernel/drivers/net/wireless/zydas/zd1211rw/zd1211rw.ko
|
||||
#/lib/modules/%{kernel_ver}%{?KERNEL_TARGET}/kernel/drivers/net/wireless/bcm43xx/bcm43xx.ko
|
||||
/lib/modules/%{kernel_ver}%{?KERNEL_TARGET}/kernel/drivers/ssb/ssb.ko
|
||||
/lib/modules/%{kernel_ver}%{?KERNEL_TARGET}/kernel/net/mac80211/mac80211.ko
|
||||
/lib/modules/%{kernel_ver}%{?KERNEL_TARGET}/kernel/net/wireless/cfg80211.ko
|
||||
|
||||
%files %{KERNEL_TARGET}-source -f kernel-source.files
|
||||
%defattr(-,root,root)
|
||||
/usr/src/linux-%{kernel_ver}%{?KERNEL_TARGET}/arch/.gitignore
|
||||
/usr/src/linux-%{kernel_ver}%{?KERNEL_TARGET}/Documentation
|
||||
/usr/src/linux-%{kernel_ver}%{?KERNEL_TARGET}/REPORTING-BUGS
|
||||
/usr/src/linux-%{kernel_ver}%{?KERNEL_TARGET}/usr/gen_init_cpio.c
|
||||
/usr/src/linux-%{kernel_ver}%{?KERNEL_TARGET}/usr/initramfs_data.S
|
||||
#/usr/src/linux-%{kernel_ver}%{?KERNEL_TARGET}/usr/initramfs_data.bz2.S
|
||||
@ -944,6 +698,9 @@ exit 0
|
||||
/usr/src/linux-%{kernel_ver}%{?KERNEL_TARGET}/usr/Makefile
|
||||
/usr/src/linux-%{kernel_ver}%{?KERNEL_TARGET}/usr/.gitignore
|
||||
/usr/src/linux-%{kernel_ver}%{?KERNEL_TARGET}/tools
|
||||
%ifarch x86_64
|
||||
%exclude /usr/src/linux-%{kernel_ver}%{?KERNEL_TARGET}/tools/objtool/objtool
|
||||
%endif
|
||||
/usr/src/linux-%{kernel_ver}%{?KERNEL_TARGET}/.missing-syscalls.d
|
||||
%if "%{with_full_source}" == "1"
|
||||
/usr/src/linux-%{kernel_ver}%{?KERNEL_TARGET}/block
|
||||
@ -964,7 +721,7 @@ exit 0
|
||||
/usr/src/linux-%{kernel_ver}%{?KERNEL_TARGET}/Kconfig
|
||||
/usr/src/linux-%{kernel_ver}%{?KERNEL_TARGET}/certs
|
||||
/usr/src/linux-%{kernel_ver}%{?KERNEL_TARGET}/certs/.gitignore
|
||||
/usr/src/linux-%{kernel_ver}%{?KERNEL_TARGET}/drivers
|
||||
#/usr/src/linux-%{kernel_ver}%{?KERNEL_TARGET}/drivers
|
||||
/usr/src/linux-%{kernel_ver}%{?KERNEL_TARGET}/include
|
||||
/usr/src/linux-%{kernel_ver}%{?KERNEL_TARGET}/init
|
||||
/usr/src/linux-%{kernel_ver}%{?KERNEL_TARGET}/Makefile
|
||||
@ -973,23 +730,38 @@ exit 0
|
||||
/usr/src/linux-%{kernel_ver}%{?KERNEL_TARGET}/MAINTAINERS
|
||||
/usr/src/linux-%{kernel_ver}%{?KERNEL_TARGET}/README
|
||||
/usr/src/linux-%{kernel_ver}%{?KERNEL_TARGET}/scripts
|
||||
%ifarch x86_64
|
||||
/usr/src/linux-%{kernel_ver}%{?KERNEL_TARGET}/tools/objtool/objtool
|
||||
%endif
|
||||
/usr/src/linux-%{kernel_ver}%{?KERNEL_TARGET}/.config
|
||||
/lib/modules/%{kernel_ver}%{?KERNEL_TARGET}/build
|
||||
/lib/modules/%{kernel_ver}%{?KERNEL_TARGET}/source
|
||||
|
||||
%files %{?KERNEL_TARGET}-firmware
|
||||
%defattr (-, root, root)
|
||||
/lib/firmware/*
|
||||
#%files %{?KERNEL_TARGET}-firmware
|
||||
#%defattr (-, root, root)
|
||||
#/lib/firmware/*
|
||||
|
||||
%changelog
|
||||
* Thu Dec 21 2017 Silvan Calarco <silvan.calarco@mambasoft.it> 4.9.71-1mamba
|
||||
- update to 4.9.71
|
||||
* Sat Jan 13 2018 Silvan Calarco <silvan.calarco@mambasoft.it> 4.14.13-2mamba
|
||||
- headers: install tools/objtool/objtool required for kbuild system (fixes virtualbox modules build)
|
||||
|
||||
* Mon Nov 27 2017 Silvan Calarco <silvan.calarco@mambasoft.it> 4.9.65-1mamba
|
||||
- update to 4.9.65
|
||||
* Wed Jan 10 2018 Automatic Build System <autodist@mambasoft.it> 4.14.13-1mamba
|
||||
- automatic version update by autodist
|
||||
|
||||
* Sat Nov 18 2017 Silvan Calarco <silvan.calarco@mambasoft.it> 4.9.62-1mamba
|
||||
- update to 4.9.62
|
||||
* Tue Dec 19 2017 Silvan Calarco <silvan.calarco@mambasoft.it> 4.14.7-1mamba
|
||||
- update to 4.14.7
|
||||
|
||||
* Tue Dec 12 2017 Silvan Calarco <silvan.calarco@mambasoft.it> 4.14.5-1mamba
|
||||
- update to 4.14.5
|
||||
|
||||
* Mon Dec 04 2017 Silvan Calarco <silvan.calarco@mambasoft.it> 4.14.3-1mamba
|
||||
- update to 4.14.3
|
||||
|
||||
* Wed Nov 22 2017 Silvan Calarco <silvan.calarco@mambasoft.it> 4.14.1-1mamba
|
||||
- update to 4.14.1
|
||||
|
||||
* Thu Nov 09 2017 Silvan Calarco <silvan.calarco@mambasoft.it> 4.13.12-1mamba
|
||||
- update to 4.13.12
|
||||
|
||||
* Thu Nov 09 2017 Silvan Calarco <silvan.calarco@mambasoft.it> 4.9.61-1mamba
|
||||
- update to 4.9.61
|
||||
|
@ -1,12 +0,0 @@
|
||||
diff -Nru kernel26-2.6.18mamba.orig/drivers/media/video/bt8xx/bttvp.h kernel26-2.6.18mamba/drivers/media/video/bt8xx/bttvp.h
|
||||
--- kernel26-2.6.18mamba.orig/drivers/media/video/bt8xx/bttvp.h 2006-09-20 05:42:06.000000000 +0200
|
||||
+++ kernel26-2.6.18mamba/drivers/media/video/bt8xx/bttvp.h 2006-09-22 13:48:19.000000000 +0200
|
||||
@@ -49,7 +49,7 @@
|
||||
|
||||
#include "bt848.h"
|
||||
#include "bttv.h"
|
||||
-#include "btcx-risc.h"
|
||||
+#include "../btcx-risc.h"
|
||||
|
||||
#ifdef __KERNEL__
|
||||
|
Binary file not shown.
78676
reiser4-for-2.6.38.patch
78676
reiser4-for-2.6.38.patch
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user