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:
Silvan Calarco 2024-01-06 01:25:08 +01:00
parent b0b77815a7
commit d0a6195eaa
41 changed files with 4182 additions and 83928 deletions

View File

@ -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)

View File

@ -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>

View File

@ -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

View File

@ -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;

View File

@ -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

View File

@ -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;

View File

@ -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),
{}
};

View File

@ -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));

View File

@ -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

View File

@ -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);

View File

@ -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
*/

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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);

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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) },

View File

@ -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

View File

@ -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,

View File

@ -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

View File

@ -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

View File

@ -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)
{

View File

@ -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

View 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

View File

@ -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);
}

View File

@ -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);
--

View 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);

View File

@ -1,5 +1,5 @@
# openmamba kernel specfile # openmamba kernel specfile
# Copyright (C) 2004-2016 by Silvan Calarco # Copyright (C) 2004-2018 by Silvan Calarco
# Copyright (C) 2004-2006 by Davide Madrisan # Copyright (C) 2004-2006 by Davide Madrisan
# released under the GPL version 3 license # released under the GPL version 3 license
# #
@ -9,19 +9,6 @@
# #
# To cross-compile: # To cross-compile:
# rpmbuild -ba --target x86_64 --define="KERNEL_TARGET <target>" kernel.spec # 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_longterm 1
%define kernel_MAJver %(echo %version | cut -d. -f1) %define kernel_MAJver %(echo %version | cut -d. -f1)
@ -87,8 +74,8 @@
%define _use_internal_dependency_generator 1 %define _use_internal_dependency_generator 1
Name: kernel Name: kernel
Version: 4.9.71 Version: 4.14.13
Release: 1mamba Release: 2mamba
Summary: The Linux Kernel, the operating system core itself Summary: The Linux Kernel, the operating system core itself
Group: System/Kernel and Hardware Group: System/Kernel and Hardware
Vendor: openmamba 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 #Source0: http://www.kernel.org/pub/linux/kernel/v2.6/longterm/v%{kernel_ver}/linux-%{version}.tar.bz2
#%endif #%endif
Source7: %{name}-rt-i586-config Source7: %{name}-rt-i586-config
#Source8: %{name}-%{kernel_majver}-mamba-ppc-config
Source9: %{name}-custom-i586-config Source9: %{name}-custom-i586-config
Source11: %{name}-%{kernel_majver}-mamba-config Source11: %{name}-%{kernel_majver}.13-mamba-config
Source12: %{name}-%{kernel_majver}-mamba-x86_64-config Source12: %{name}-%{kernel_majver}.12-mamba-x86_64-config
Source13: %{name}-%{kernel_majver}-mamba-64GB-config Source13: %{name}-%{kernel_majver}.13-mamba-64GB-config
#Source14: %{name}-%{kernel_majver}-mamba-xen-x86_64-config
Source15: %{name}-%{kernel_majver}-mamba-arm-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 Source20: %{name}-%{kernel_majver}-mamba-arm-dove-config
Patch0: kernel-2.6.35-430-scsi_header_fix.patch Patch0: kernel-2.6.35-430-scsi_header_fix.patch
# Ingo Molnar's RT 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 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 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 Patch32: kernel-2.6.26-fglrx_disable_gpl_check.patch
Patch33: kernel-2.6.26-atl1_disable_TSO.patch Patch33: kernel-2.6.26-atl1_disable_TSO.patch
Patch36: kernel-2.6.30-fglrx_flush_tlb_page.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 #Patch38: http://gentoo-xen-kernel.googlecode.com/files/xen-patches-%{kernel_ver}-%{xen_patchver}.tar.bz2
Patch39: kernel-3.2.1-rtl8139too.patch Patch39: kernel-3.2.1-rtl8139too.patch
Patch40: %{name}-2.6.33-lzo_decompressor_fix.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 Patch52: %{name}-2.6.33.7-make-3.82.patch
Patch53: %{name}-2.6.33-dns_resolve_include.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 Patch59: %{name}-2.6.35-vga_dont_ask.patch
Patch61: %{name}-3.1-arm_missing_includes.patch Patch77: kernel-baytrail-4.9.9-pwm-lpss.patch
Patch62: %{name}-2.6.38.6-arm-rtlwifi-eliminate_udelay.patch Patch78: kernel-4.14.1-x86-uaccess-static-inline-set_fs.patch
Patch63: %{name}-3.2-elantech.patch Patch79: kernel-4.14.7-Cherrytrail_ACPI_Drop_nnecessary_ACPI_GPIO_to_Linux_GPIO_translation.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
# https://dev.openwrt.org/browser/trunk/target/linux/generic/patches-3.12/100-overlayfs.patch?order=name # https://dev.openwrt.org/browser/trunk/target/linux/generic/patches-3.12/100-overlayfs.patch?order=name
Patch100: kernel-3.14.2-overlayfs.patch 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 URL: http://www.kernel.org
License: GPL License: GPL
## AUTOBUILDREQ-BEGIN ## AUTOBUILDREQ-BEGIN
@ -221,8 +160,6 @@ Provides: kernel-%{KERNEL_TARGET}-sound = %{version}-%{release}
Requires: linux-firmware Requires: linux-firmware
Provides: kernel = %{version} Provides: kernel = %{version}
Obsoletes: kernel-%{KERNEL_TARGET}-sound = %{version}
Obsoletes: kernel-%{KERNEL_TARGET}-wireless = %{version}
%description %{KERNEL_TARGET} %description %{KERNEL_TARGET}
The Linux Kernel, the operating system core itself. The Linux Kernel, the operating system core itself.
@ -274,10 +211,6 @@ Firmware files used by the Linux Kernel.
%prep %prep
[ "%{buildroot}" != / ] && rm -rf "%{buildroot}" [ "%{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" && { ld -v | grep "gold" && {
echo "Error: ld GOLD detected, which is incompatible with this package. Aborting." 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 # for use with proprietary ATI fglrx drivers
#%patch32 -p1 #%patch32 -p1
# reiser4 support patch # reiser4 support patch
#%patch4 -p1
# export flushtlb_page symbol (for fglrx driver) # export flushtlb_page symbol (for fglrx driver)
%patch36 -p0 %patch36 -p0
## fixes a kernel panic with wmi when stack protector is enabled ## fixes a kernel panic with wmi when stack protector is enabled
@ -403,23 +335,9 @@ cp $kernel_cfg ./.config
#% patch51 -p1 #% patch51 -p1
%patch53 -p1 %patch53 -p1
%patch59 -p1 %patch59 -p1
## Elantech touchpad patch generated from http://people.debian.org/~julien/lp681904/psmouse-elantech-lp681904-1.tar.bz2 %patch77 -p1
#%patch63 -p1 %patch78 -p1 -R
#%patch73 -p1 %patch79 -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
%build %build
#:<< ___EOF #:<< ___EOF
@ -524,57 +442,16 @@ cp %{_builddir}/%{name}-%{kernel_ver}%{?KERNEL_TARGET}/Module.symvers %{buildroo
#sed -i "s/\(EXTRAVERSION =.*\)/\1%{?KERNEL_TARGET}/" Makefile #sed -i "s/\(EXTRAVERSION =.*\)/\1%{?KERNEL_TARGET}/" Makefile
#%if "%{_target_platform}" == "%{_build}" #%if "%{_target_platform}" == "%{_build}"
%ifnarch arm
# FIXME: problems cross-compiling and running x86_64 tools on x86; building as x86 code for now # FIXME: problems cross-compiling and running x86_64 tools on x86; building as x86 code for now
ARCH=%{target_cpu} make \ ARCH=%{target_cpu} make \
HOSTCC=%{_build}-gcc \ HOSTCC=%{_build}-gcc \
CROSS_COMPILE=%{_target_platform}- \ CROSS_COMPILE=%{_target_platform}- \
prepare scripts oldconfig 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/ cp -a include/generated/* include/linux/
#%endif #%endif
rm .config.old 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 # 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.{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} 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 esac
# discovered while building nvidia 304.88 for 3.10 # discovered while building nvidia 304.88 for 3.10
%ifnarch arm
[ -e %{buildroot}%{_prefix}/src/linux-%{kernel_ver}%{?KERNEL_TARGET}/include/uapi/asm ] || \ [ -e %{buildroot}%{_prefix}/src/linux-%{kernel_ver}%{?KERNEL_TARGET}/include/uapi/asm ] || \
ln -s ../../arch/$headers_arch/include/uapi/asm \ ln -s ../../arch/$headers_arch/include/uapi/asm \
%{buildroot}%{_prefix}/src/linux-%{kernel_ver}%{?KERNEL_TARGET}/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 ] || \ [ -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 \ find $splitdirs -type f -name *.h -exec \
echo "%{_prefix}/src/linux-%{kernel_ver}%{?KERNEL_TARGET}/"{} >> \ echo "%{_prefix}/src/linux-%{kernel_ver}%{?KERNEL_TARGET}/"{} >> \
@ -682,43 +562,6 @@ if [ $1 -gt 1 ]; then
fi fi
exit 0 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} %postun %{?KERNEL_TARGET}
# erase this package # erase this package
if [ $1 -eq 0 ]; then if [ $1 -eq 0 ]; then
@ -836,104 +679,15 @@ exit 0
/lib/modules/%{kernel_ver}%{?KERNEL_TARGET}/kernel/net/* /lib/modules/%{kernel_ver}%{?KERNEL_TARGET}/kernel/net/*
%dir /lib/modules/%{kernel_ver}%{?KERNEL_TARGET}/kernel/security %dir /lib/modules/%{kernel_ver}%{?KERNEL_TARGET}/kernel/security
/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 %dir /lib/modules/%{kernel_ver}%{?KERNEL_TARGET}/kernel/virt
/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 %files %{KERNEL_TARGET}-source -f kernel-source.files
%defattr(-,root,root) %defattr(-,root,root)
/usr/src/linux-%{kernel_ver}%{?KERNEL_TARGET}/arch/.gitignore /usr/src/linux-%{kernel_ver}%{?KERNEL_TARGET}/arch/.gitignore
/usr/src/linux-%{kernel_ver}%{?KERNEL_TARGET}/Documentation /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/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.S
#/usr/src/linux-%{kernel_ver}%{?KERNEL_TARGET}/usr/initramfs_data.bz2.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/Makefile
/usr/src/linux-%{kernel_ver}%{?KERNEL_TARGET}/usr/.gitignore /usr/src/linux-%{kernel_ver}%{?KERNEL_TARGET}/usr/.gitignore
/usr/src/linux-%{kernel_ver}%{?KERNEL_TARGET}/tools /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 /usr/src/linux-%{kernel_ver}%{?KERNEL_TARGET}/.missing-syscalls.d
%if "%{with_full_source}" == "1" %if "%{with_full_source}" == "1"
/usr/src/linux-%{kernel_ver}%{?KERNEL_TARGET}/block /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}/Kconfig
/usr/src/linux-%{kernel_ver}%{?KERNEL_TARGET}/certs /usr/src/linux-%{kernel_ver}%{?KERNEL_TARGET}/certs
/usr/src/linux-%{kernel_ver}%{?KERNEL_TARGET}/certs/.gitignore /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}/include
/usr/src/linux-%{kernel_ver}%{?KERNEL_TARGET}/init /usr/src/linux-%{kernel_ver}%{?KERNEL_TARGET}/init
/usr/src/linux-%{kernel_ver}%{?KERNEL_TARGET}/Makefile /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}/MAINTAINERS
/usr/src/linux-%{kernel_ver}%{?KERNEL_TARGET}/README /usr/src/linux-%{kernel_ver}%{?KERNEL_TARGET}/README
/usr/src/linux-%{kernel_ver}%{?KERNEL_TARGET}/scripts /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 /usr/src/linux-%{kernel_ver}%{?KERNEL_TARGET}/.config
/lib/modules/%{kernel_ver}%{?KERNEL_TARGET}/build /lib/modules/%{kernel_ver}%{?KERNEL_TARGET}/build
/lib/modules/%{kernel_ver}%{?KERNEL_TARGET}/source /lib/modules/%{kernel_ver}%{?KERNEL_TARGET}/source
%files %{?KERNEL_TARGET}-firmware #%files %{?KERNEL_TARGET}-firmware
%defattr (-, root, root) #%defattr (-, root, root)
/lib/firmware/* #/lib/firmware/*
%changelog %changelog
* Thu Dec 21 2017 Silvan Calarco <silvan.calarco@mambasoft.it> 4.9.71-1mamba * Sat Jan 13 2018 Silvan Calarco <silvan.calarco@mambasoft.it> 4.14.13-2mamba
- update to 4.9.71 - 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 * Wed Jan 10 2018 Automatic Build System <autodist@mambasoft.it> 4.14.13-1mamba
- update to 4.9.65 - automatic version update by autodist
* Sat Nov 18 2017 Silvan Calarco <silvan.calarco@mambasoft.it> 4.9.62-1mamba * Tue Dec 19 2017 Silvan Calarco <silvan.calarco@mambasoft.it> 4.14.7-1mamba
- update to 4.9.62 - 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 * Thu Nov 09 2017 Silvan Calarco <silvan.calarco@mambasoft.it> 4.9.61-1mamba
- update to 4.9.61 - update to 4.9.61

View File

@ -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.

File diff suppressed because it is too large Load Diff