forked from AUR/linux-vfio
Initial commit - 3.18.4
This commit is contained in:
commit
ad914fbb31
59
.SRCINFO
Normal file
59
.SRCINFO
Normal file
@ -0,0 +1,59 @@
|
||||
pkgbase = linux-vfio
|
||||
pkgver = 3.18.4
|
||||
pkgrel = 1
|
||||
url = http://www.kernel.org/
|
||||
arch = i686
|
||||
arch = x86_64
|
||||
license = GPL2
|
||||
makedepends = xmlto
|
||||
makedepends = docbook-xsl
|
||||
makedepends = kmod
|
||||
makedepends = inetutils
|
||||
makedepends = bc
|
||||
options = !strip
|
||||
source = https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.18.tar.xz
|
||||
source = https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.18.tar.sign
|
||||
source = https://www.kernel.org/pub/linux/kernel/v3.x/patch-3.18.4.xz
|
||||
source = https://www.kernel.org/pub/linux/kernel/v3.x/patch-3.18.4.sign
|
||||
source = config
|
||||
source = config.x86_64
|
||||
source = linux.preset
|
||||
source = change-default-console-loglevel.patch
|
||||
source = override_for_missing_acs_capabilities.patch
|
||||
source = i915_317.patch
|
||||
sha256sums = becc413cc9e6d7f5cc52a3ce66d65c3725bc1d1cc1001f4ce6c32b69eb188cbd
|
||||
sha256sums = SKIP
|
||||
sha256sums = 57c74ba5266bb10be335a89d30480739b3de67b5a72b3e0b0d37a27775b1862a
|
||||
sha256sums = SKIP
|
||||
sha256sums = d3794c8b2cd11b71914b41f7a4e861369d4fa3c29fdd9e1d677ff0c2167eeb52
|
||||
sha256sums = df7886f5d57f8f85e89987066dfa5c316e922dc0b22e6e6ad01331333db52377
|
||||
sha256sums = f0d90e756f14533ee67afda280500511a62465b4f76adcc5effa95a40045179c
|
||||
sha256sums = 1256b241cd477b265a3c2d64bdc19ffe3c9bbcee82ea3994c590c2c76e767d99
|
||||
sha256sums = 7320b4abc2918cfb0cb084330a7470887e9a9cfb6496381460bcf4085eb62e0f
|
||||
sha256sums = f86ce528b63f198b84c4d8d92d35329aa4000d462217dc2db03bac5eb693cf19
|
||||
|
||||
pkgname = linux-vfio
|
||||
pkgdesc = The Linux-vfio kernel and modules
|
||||
install = linux.install
|
||||
depends = coreutils
|
||||
depends = linux-firmware
|
||||
depends = kmod
|
||||
depends = mkinitcpio>=0.7
|
||||
optdepends = crda: to set the correct wireless channels of your country
|
||||
provides = kernel26-vfio=3.18.4
|
||||
conflicts = kernel26-vfio
|
||||
replaces = kernel26-vfio
|
||||
backup = etc/mkinitcpio.d/linux-vfio.preset
|
||||
|
||||
pkgname = linux-vfio-headers
|
||||
pkgdesc = Header files and scripts for building modules for Linux-vfio kernel
|
||||
provides = kernel26-vfio-headers=3.18.4
|
||||
conflicts = kernel26-vfio-headers
|
||||
replaces = kernel26-vfio-headers
|
||||
|
||||
pkgname = linux-vfio-docs
|
||||
pkgdesc = Kernel hackers manual - HTML documentation that comes with the Linux-vfio kernel
|
||||
provides = kernel26-vfio-docs=3.18.4
|
||||
conflicts = kernel26-vfio-docs
|
||||
replaces = kernel26-vfio-docs
|
||||
|
308
PKGBUILD
Normal file
308
PKGBUILD
Normal file
@ -0,0 +1,308 @@
|
||||
#Maintainer: Dan Ziemba <zman0900@gmail.com>
|
||||
|
||||
pkgbase=linux-vfio
|
||||
_srcname=linux-3.18
|
||||
pkgver=3.18.4
|
||||
pkgrel=1
|
||||
arch=('i686' 'x86_64')
|
||||
url="http://www.kernel.org/"
|
||||
license=('GPL2')
|
||||
makedepends=('xmlto' 'docbook-xsl' 'kmod' 'inetutils' 'bc')
|
||||
options=('!strip')
|
||||
source=("https://www.kernel.org/pub/linux/kernel/v3.x/${_srcname}.tar.xz"
|
||||
"https://www.kernel.org/pub/linux/kernel/v3.x/${_srcname}.tar.sign"
|
||||
"https://www.kernel.org/pub/linux/kernel/v3.x/patch-${pkgver}.xz"
|
||||
"https://www.kernel.org/pub/linux/kernel/v3.x/patch-${pkgver}.sign"
|
||||
# the main kernel config files
|
||||
'config' 'config.x86_64'
|
||||
# standard config files for mkinitcpio ramdisk
|
||||
'linux.preset'
|
||||
'change-default-console-loglevel.patch'
|
||||
'override_for_missing_acs_capabilities.patch'
|
||||
'i915_317.patch'
|
||||
)
|
||||
sha256sums=('becc413cc9e6d7f5cc52a3ce66d65c3725bc1d1cc1001f4ce6c32b69eb188cbd'
|
||||
'SKIP'
|
||||
'57c74ba5266bb10be335a89d30480739b3de67b5a72b3e0b0d37a27775b1862a'
|
||||
'SKIP'
|
||||
'd3794c8b2cd11b71914b41f7a4e861369d4fa3c29fdd9e1d677ff0c2167eeb52'
|
||||
'df7886f5d57f8f85e89987066dfa5c316e922dc0b22e6e6ad01331333db52377'
|
||||
'f0d90e756f14533ee67afda280500511a62465b4f76adcc5effa95a40045179c'
|
||||
'1256b241cd477b265a3c2d64bdc19ffe3c9bbcee82ea3994c590c2c76e767d99'
|
||||
'7320b4abc2918cfb0cb084330a7470887e9a9cfb6496381460bcf4085eb62e0f'
|
||||
'f86ce528b63f198b84c4d8d92d35329aa4000d462217dc2db03bac5eb693cf19')
|
||||
validpgpkeys=(
|
||||
'ABAF11C65A2970B130ABE3C479BE3E4300411886' # Linus Torvalds
|
||||
'647F28654894E3BD457199BE38DBBDC86092693E' # Greg Kroah-Hartman
|
||||
)
|
||||
|
||||
_kernelname=${pkgbase#linux}
|
||||
|
||||
prepare() {
|
||||
cd "${srcdir}/${_srcname}"
|
||||
|
||||
# add upstream patch
|
||||
patch -p1 -i "${srcdir}/patch-${pkgver}"
|
||||
|
||||
# add latest fixes from stable queue, if needed
|
||||
# http://git.kernel.org/?p=linux/kernel/git/stable/stable-queue.git
|
||||
|
||||
# set DEFAULT_CONSOLE_LOGLEVEL to 4 (same value as the 'quiet' kernel param)
|
||||
# remove this when a Kconfig knob is made available by upstream
|
||||
# (relevant patch sent upstream: https://lkml.org/lkml/2011/7/26/227)
|
||||
patch -p1 -i "${srcdir}/change-default-console-loglevel.patch"
|
||||
|
||||
if [ "${CARCH}" = "x86_64" ]; then
|
||||
cat "${srcdir}/config.x86_64" > ./.config
|
||||
else
|
||||
cat "${srcdir}/config" > ./.config
|
||||
fi
|
||||
|
||||
# patches for vga arbiter fix in intel systems
|
||||
patch -Np1 -i "${srcdir}/i915_317.patch"
|
||||
|
||||
# Overrides for missing acs capabilities
|
||||
patch -p1 -i "${srcdir}/override_for_missing_acs_capabilities.patch"
|
||||
|
||||
if [ "${_kernelname}" != "" ]; then
|
||||
sed -i "s|CONFIG_LOCALVERSION=.*|CONFIG_LOCALVERSION=\"${_kernelname}\"|g" ./.config
|
||||
sed -i "s|CONFIG_LOCALVERSION_AUTO=.*|CONFIG_LOCALVERSION_AUTO=n|" ./.config
|
||||
fi
|
||||
|
||||
# set extraversion to pkgrel
|
||||
sed -ri "s|^(EXTRAVERSION =).*|\1 -${pkgrel}|" Makefile
|
||||
|
||||
# don't run depmod on 'make install'. We'll do this ourselves in packaging
|
||||
sed -i '2iexit 0' scripts/depmod.sh
|
||||
|
||||
# get kernel version
|
||||
make prepare
|
||||
|
||||
# load configuration
|
||||
# Configure the kernel. Replace the line below with one of your choice.
|
||||
#make menuconfig # CLI menu for configuration
|
||||
#make nconfig # new CLI menu for configuration
|
||||
#make xconfig # X-based configuration
|
||||
#make oldconfig # using old config from previous kernel version
|
||||
# ... or manually edit .config
|
||||
|
||||
# rewrite configuration
|
||||
yes "" | make config >/dev/null
|
||||
}
|
||||
|
||||
build() {
|
||||
cd "${srcdir}/${_srcname}"
|
||||
|
||||
make ${MAKEFLAGS} LOCALVERSION= bzImage modules
|
||||
}
|
||||
|
||||
_package() {
|
||||
pkgdesc="The ${pkgbase/linux/Linux} kernel and modules"
|
||||
[ "${pkgbase}" = "linux" ] && groups=('base')
|
||||
depends=('coreutils' 'linux-firmware' 'kmod' 'mkinitcpio>=0.7')
|
||||
optdepends=('crda: to set the correct wireless channels of your country')
|
||||
provides=("kernel26${_kernelname}=${pkgver}")
|
||||
conflicts=("kernel26${_kernelname}")
|
||||
replaces=("kernel26${_kernelname}")
|
||||
backup=("etc/mkinitcpio.d/${pkgbase}.preset")
|
||||
install=linux.install
|
||||
|
||||
cd "${srcdir}/${_srcname}"
|
||||
|
||||
KARCH=x86
|
||||
|
||||
# get kernel version
|
||||
_kernver="$(make LOCALVERSION= kernelrelease)"
|
||||
_basekernel=${_kernver%%-*}
|
||||
_basekernel=${_basekernel%.*}
|
||||
|
||||
mkdir -p "${pkgdir}"/{lib/modules,lib/firmware,boot}
|
||||
make LOCALVERSION= INSTALL_MOD_PATH="${pkgdir}" modules_install
|
||||
cp arch/$KARCH/boot/bzImage "${pkgdir}/boot/vmlinuz-${pkgbase}"
|
||||
|
||||
# set correct depmod command for install
|
||||
cp -f "${startdir}/${install}" "${startdir}/${install}.pkg"
|
||||
true && install=${install}.pkg
|
||||
sed \
|
||||
-e "s/KERNEL_NAME=.*/KERNEL_NAME=${_kernelname}/" \
|
||||
-e "s/KERNEL_VERSION=.*/KERNEL_VERSION=${_kernver}/" \
|
||||
-i "${startdir}/${install}"
|
||||
|
||||
# install mkinitcpio preset file for kernel
|
||||
install -D -m644 "${srcdir}/linux.preset" "${pkgdir}/etc/mkinitcpio.d/${pkgbase}.preset"
|
||||
sed \
|
||||
-e "1s|'linux.*'|'${pkgbase}'|" \
|
||||
-e "s|ALL_kver=.*|ALL_kver=\"/boot/vmlinuz-${pkgbase}\"|" \
|
||||
-e "s|default_image=.*|default_image=\"/boot/initramfs-${pkgbase}.img\"|" \
|
||||
-e "s|fallback_image=.*|fallback_image=\"/boot/initramfs-${pkgbase}-fallback.img\"|" \
|
||||
-i "${pkgdir}/etc/mkinitcpio.d/${pkgbase}.preset"
|
||||
|
||||
# remove build and source links
|
||||
rm -f "${pkgdir}"/lib/modules/${_kernver}/{source,build}
|
||||
# remove the firmware
|
||||
rm -rf "${pkgdir}/lib/firmware"
|
||||
# gzip -9 all modules to save 100MB of space
|
||||
find "${pkgdir}" -name '*.ko' -exec gzip -9 {} \;
|
||||
# make room for external modules
|
||||
ln -s "../extramodules-${_basekernel}${_kernelname:--ARCH}" "${pkgdir}/lib/modules/${_kernver}/extramodules"
|
||||
# add real version for building modules and running depmod from post_install/upgrade
|
||||
mkdir -p "${pkgdir}/lib/modules/extramodules-${_basekernel}${_kernelname:--ARCH}"
|
||||
echo "${_kernver}" > "${pkgdir}/lib/modules/extramodules-${_basekernel}${_kernelname:--ARCH}/version"
|
||||
|
||||
# Now we call depmod...
|
||||
depmod -b "${pkgdir}" -F System.map "${_kernver}"
|
||||
|
||||
# move module tree /lib -> /usr/lib
|
||||
mkdir -p "${pkgdir}/usr"
|
||||
mv "${pkgdir}/lib" "${pkgdir}/usr/"
|
||||
|
||||
# add vmlinux
|
||||
install -D -m644 vmlinux "${pkgdir}/usr/lib/modules/${_kernver}/build/vmlinux"
|
||||
}
|
||||
|
||||
_package-headers() {
|
||||
pkgdesc="Header files and scripts for building modules for ${pkgbase/linux/Linux} kernel"
|
||||
provides=("kernel26${_kernelname}-headers=${pkgver}")
|
||||
conflicts=("kernel26${_kernelname}-headers")
|
||||
replaces=("kernel26${_kernelname}-headers")
|
||||
|
||||
install -dm755 "${pkgdir}/usr/lib/modules/${_kernver}"
|
||||
|
||||
cd "${srcdir}/${_srcname}"
|
||||
install -D -m644 Makefile \
|
||||
"${pkgdir}/usr/lib/modules/${_kernver}/build/Makefile"
|
||||
install -D -m644 kernel/Makefile \
|
||||
"${pkgdir}/usr/lib/modules/${_kernver}/build/kernel/Makefile"
|
||||
install -D -m644 .config \
|
||||
"${pkgdir}/usr/lib/modules/${_kernver}/build/.config"
|
||||
|
||||
mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/include"
|
||||
|
||||
for i in acpi asm-generic config crypto drm generated keys linux math-emu \
|
||||
media net pcmcia scsi sound trace uapi video xen; do
|
||||
cp -a include/${i} "${pkgdir}/usr/lib/modules/${_kernver}/build/include/"
|
||||
done
|
||||
|
||||
# copy arch includes for external modules
|
||||
mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/arch/x86"
|
||||
cp -a arch/x86/include "${pkgdir}/usr/lib/modules/${_kernver}/build/arch/x86/"
|
||||
|
||||
# copy files necessary for later builds, like nvidia and vmware
|
||||
cp Module.symvers "${pkgdir}/usr/lib/modules/${_kernver}/build"
|
||||
cp -a scripts "${pkgdir}/usr/lib/modules/${_kernver}/build"
|
||||
|
||||
# fix permissions on scripts dir
|
||||
chmod og-w -R "${pkgdir}/usr/lib/modules/${_kernver}/build/scripts"
|
||||
mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/.tmp_versions"
|
||||
|
||||
mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/arch/${KARCH}/kernel"
|
||||
|
||||
cp arch/${KARCH}/Makefile "${pkgdir}/usr/lib/modules/${_kernver}/build/arch/${KARCH}/"
|
||||
|
||||
if [ "${CARCH}" = "i686" ]; then
|
||||
cp arch/${KARCH}/Makefile_32.cpu "${pkgdir}/usr/lib/modules/${_kernver}/build/arch/${KARCH}/"
|
||||
fi
|
||||
|
||||
cp arch/${KARCH}/kernel/asm-offsets.s "${pkgdir}/usr/lib/modules/${_kernver}/build/arch/${KARCH}/kernel/"
|
||||
|
||||
# add docbook makefile
|
||||
install -D -m644 Documentation/DocBook/Makefile \
|
||||
"${pkgdir}/usr/lib/modules/${_kernver}/build/Documentation/DocBook/Makefile"
|
||||
|
||||
# add dm headers
|
||||
mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/md"
|
||||
cp drivers/md/*.h "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/md"
|
||||
|
||||
# add inotify.h
|
||||
mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/include/linux"
|
||||
cp include/linux/inotify.h "${pkgdir}/usr/lib/modules/${_kernver}/build/include/linux/"
|
||||
|
||||
# add wireless headers
|
||||
mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/net/mac80211/"
|
||||
cp net/mac80211/*.h "${pkgdir}/usr/lib/modules/${_kernver}/build/net/mac80211/"
|
||||
|
||||
# add dvb headers for external modules
|
||||
# in reference to:
|
||||
# http://bugs.archlinux.org/task/9912
|
||||
mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/dvb-core"
|
||||
cp drivers/media/dvb-core/*.h "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/dvb-core/"
|
||||
# and...
|
||||
# http://bugs.archlinux.org/task/11194
|
||||
mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/include/config/dvb/"
|
||||
cp include/config/dvb/*.h "${pkgdir}/usr/lib/modules/${_kernver}/build/include/config/dvb/"
|
||||
|
||||
# add dvb headers for http://mcentral.de/hg/~mrec/em28xx-new
|
||||
# in reference to:
|
||||
# http://bugs.archlinux.org/task/13146
|
||||
mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/dvb-frontends/"
|
||||
cp drivers/media/dvb-frontends/lgdt330x.h "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/dvb-frontends/"
|
||||
mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/i2c/"
|
||||
cp drivers/media/i2c/msp3400-driver.h "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/i2c/"
|
||||
|
||||
# add dvb headers
|
||||
# in reference to:
|
||||
# http://bugs.archlinux.org/task/20402
|
||||
mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/usb/dvb-usb"
|
||||
cp drivers/media/usb/dvb-usb/*.h "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/usb/dvb-usb/"
|
||||
mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/dvb-frontends"
|
||||
cp drivers/media/dvb-frontends/*.h "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/dvb-frontends/"
|
||||
mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/tuners"
|
||||
cp drivers/media/tuners/*.h "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/tuners/"
|
||||
|
||||
# add xfs and shmem for aufs building
|
||||
mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/fs/xfs"
|
||||
mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/mm"
|
||||
# removed in 3.17 series
|
||||
# cp fs/xfs/xfs_sb.h "${pkgdir}/usr/lib/modules/${_kernver}/build/fs/xfs/xfs_sb.h"
|
||||
|
||||
# copy in Kconfig files
|
||||
for i in $(find . -name "Kconfig*"); do
|
||||
mkdir -p "${pkgdir}"/usr/lib/modules/${_kernver}/build/`echo ${i} | sed 's|/Kconfig.*||'`
|
||||
cp ${i} "${pkgdir}/usr/lib/modules/${_kernver}/build/${i}"
|
||||
done
|
||||
|
||||
chown -R root.root "${pkgdir}/usr/lib/modules/${_kernver}/build"
|
||||
find "${pkgdir}/usr/lib/modules/${_kernver}/build" -type d -exec chmod 755 {} \;
|
||||
|
||||
# strip scripts directory
|
||||
find "${pkgdir}/usr/lib/modules/${_kernver}/build/scripts" -type f -perm -u+w 2>/dev/null | while read binary ; do
|
||||
case "$(file -bi "${binary}")" in
|
||||
*application/x-sharedlib*) # Libraries (.so)
|
||||
/usr/bin/strip ${STRIP_SHARED} "${binary}";;
|
||||
*application/x-archive*) # Libraries (.a)
|
||||
/usr/bin/strip ${STRIP_STATIC} "${binary}";;
|
||||
*application/x-executable*) # Binaries
|
||||
/usr/bin/strip ${STRIP_BINARIES} "${binary}";;
|
||||
esac
|
||||
done
|
||||
|
||||
# remove unneeded architectures
|
||||
rm -rf "${pkgdir}"/usr/lib/modules/${_kernver}/build/arch/{alpha,arc,arm,arm26,arm64,avr32,blackfin,c6x,cris,frv,h8300,hexagon,ia64,m32r,m68k,m68knommu,metag,mips,microblaze,mn10300,openrisc,parisc,powerpc,ppc,s390,score,sh,sh64,sparc,sparc64,tile,unicore32,um,v850,xtensa}
|
||||
}
|
||||
|
||||
_package-docs() {
|
||||
pkgdesc="Kernel hackers manual - HTML documentation that comes with the ${pkgbase/linux/Linux} kernel"
|
||||
provides=("kernel26${_kernelname}-docs=${pkgver}")
|
||||
conflicts=("kernel26${_kernelname}-docs")
|
||||
replaces=("kernel26${_kernelname}-docs")
|
||||
|
||||
cd "${srcdir}/${_srcname}"
|
||||
|
||||
mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build"
|
||||
cp -al Documentation "${pkgdir}/usr/lib/modules/${_kernver}/build"
|
||||
find "${pkgdir}" -type f -exec chmod 444 {} \;
|
||||
find "${pkgdir}" -type d -exec chmod 755 {} \;
|
||||
|
||||
# remove a file already in linux package
|
||||
rm -f "${pkgdir}/usr/lib/modules/${_kernver}/build/Documentation/DocBook/Makefile"
|
||||
}
|
||||
|
||||
pkgname=("${pkgbase}" "${pkgbase}-headers" "${pkgbase}-docs")
|
||||
for _p in ${pkgname[@]}; do
|
||||
eval "package_${_p}() {
|
||||
$(declare -f "_package${_p#${pkgbase}}")
|
||||
_package${_p#${pkgbase}}
|
||||
}"
|
||||
done
|
||||
|
||||
# vim:set ts=8 sts=2 sw=2 et:
|
5
README
Normal file
5
README
Normal file
@ -0,0 +1,5 @@
|
||||
This is an Arch Linux PKGBUILD that tracks the repositoriy kernel version but
|
||||
has the necessary patches applied to allow GPU passthrough with KVM using
|
||||
vfio.
|
||||
|
||||
See https://bbs.archlinux.org/viewtopic.php?id=162768 for more info.
|
11
change-default-console-loglevel.patch
Normal file
11
change-default-console-loglevel.patch
Normal file
@ -0,0 +1,11 @@
|
||||
--- linux-3.16/include/linux/printk.h.old 2014-08-04 18:48:30.686043266 +0200
|
||||
+++ linux-3.16/include/linux/printk.h 2014-08-04 18:48:47.706218528 +0200
|
||||
@@ -37,7 +37,7 @@
|
||||
#define CONSOLE_LOGLEVEL_SILENT 0 /* Mum's the word */
|
||||
#define CONSOLE_LOGLEVEL_MIN 1 /* Minimum loglevel we let people use */
|
||||
#define CONSOLE_LOGLEVEL_QUIET 4 /* Shhh ..., when booted with "quiet" */
|
||||
-#define CONSOLE_LOGLEVEL_DEFAULT 7 /* anything MORE serious than KERN_DEBUG */
|
||||
+#define CONSOLE_LOGLEVEL_DEFAULT 4 /* anything MORE serious than KERN_DEBUG */
|
||||
#define CONSOLE_LOGLEVEL_DEBUG 10 /* issue debug messages */
|
||||
#define CONSOLE_LOGLEVEL_MOTORMOUTH 15 /* You can't shut this one up */
|
||||
|
6972
config.x86_64
Normal file
6972
config.x86_64
Normal file
File diff suppressed because it is too large
Load Diff
156
i915_317.patch
Normal file
156
i915_317.patch
Normal file
@ -0,0 +1,156 @@
|
||||
diff -rupN linux-3.17.old/drivers/gpu/drm/i915/i915_dma.c linux-3.17/drivers/gpu/drm/i915/i915_dma.c
|
||||
--- linux-3.17.old/drivers/gpu/drm/i915/i915_dma.c 2014-10-05 17:23:04.000000000 -0200
|
||||
+++ linux-3.17/drivers/gpu/drm/i915/i915_dma.c 2014-10-08 13:25:35.261920170 -0200
|
||||
@@ -1316,10 +1316,20 @@ static int i915_load_modeset_init(struct
|
||||
* If we are a secondary display controller (!PCI_DISPLAY_CLASS_VGA),
|
||||
* then we do not take part in VGA arbitration and the
|
||||
* vga_client_register() fails with -ENODEV.
|
||||
+ *
|
||||
+ * NB. The set_decode callback here actually only works on GMCH
|
||||
+ * devices, on newer HD devices we can only disable VGA MMIO space.
|
||||
+ * Disabling VGA I/O space requires disabling I/O in the PCI command
|
||||
+ * register. Nonetheless, we like to pretend that we participate in
|
||||
+ * VGA arbitration and can dynamically disable VGA I/O space because
|
||||
+ * this makes X happy, even though it's a complete lie.
|
||||
*/
|
||||
- ret = vga_client_register(dev->pdev, dev, NULL, i915_vga_set_decode);
|
||||
- if (ret && ret != -ENODEV)
|
||||
- goto out;
|
||||
+ if (!i915.enable_hd_vgaarb || !HAS_PCH_SPLIT(dev)) {
|
||||
+ ret = vga_client_register(dev->pdev, dev, NULL,
|
||||
+ i915_vga_set_decode);
|
||||
+ if (ret && ret != -ENODEV)
|
||||
+ goto out;
|
||||
+ }
|
||||
|
||||
intel_register_dsm_handler();
|
||||
|
||||
@@ -1369,6 +1379,12 @@ static int i915_load_modeset_init(struct
|
||||
if (ret)
|
||||
goto cleanup_gem;
|
||||
|
||||
+ /*
|
||||
+ * Must do this after fbcon init so that
|
||||
+ * vgacon_save_screen() works during the handover.
|
||||
+ */
|
||||
+ i915_disable_vga_mem(dev);
|
||||
+
|
||||
/* Only enable hotplug handling once the fbdev is fully set up. */
|
||||
intel_hpd_init(dev);
|
||||
|
||||
diff -rupN linux-3.17.old/drivers/gpu/drm/i915/i915_drv.h linux-3.17/drivers/gpu/drm/i915/i915_drv.h
|
||||
--- linux-3.17.old/drivers/gpu/drm/i915/i915_drv.h 2014-10-05 17:23:04.000000000 -0200
|
||||
+++ linux-3.17/drivers/gpu/drm/i915/i915_drv.h 2014-10-08 13:26:45.200867353 -0200
|
||||
@@ -2147,6 +2147,7 @@ struct i915_params {
|
||||
bool reset;
|
||||
bool disable_display;
|
||||
bool disable_vtd_wa;
|
||||
+ bool enable_hd_vgaarb;
|
||||
int use_mmio_flip;
|
||||
bool mmio_debug;
|
||||
};
|
||||
diff -rupN linux-3.17.old/drivers/gpu/drm/i915/i915_params.c linux-3.17/drivers/gpu/drm/i915/i915_params.c
|
||||
--- linux-3.17.old/drivers/gpu/drm/i915/i915_params.c 2014-10-05 17:23:04.000000000 -0200
|
||||
+++ linux-3.17/drivers/gpu/drm/i915/i915_params.c 2014-10-08 13:28:08.960803683 -0200
|
||||
@@ -48,6 +48,7 @@ struct i915_params i915 __read_mostly =
|
||||
.disable_display = 0,
|
||||
.enable_cmd_parser = 1,
|
||||
.disable_vtd_wa = 0,
|
||||
+ .enable_hd_vgaarb = false,
|
||||
.use_mmio_flip = 0,
|
||||
.mmio_debug = 0,
|
||||
};
|
||||
@@ -159,6 +160,10 @@ module_param_named(enable_cmd_parser, i9
|
||||
MODULE_PARM_DESC(enable_cmd_parser,
|
||||
"Enable command parsing (1=enabled [default], 0=disabled)");
|
||||
|
||||
+module_param_named(enable_hd_vgaarb, i915.enable_hd_vgaarb, bool, 0444);
|
||||
+MODULE_PARM_DESC(enable_hd_vgaarb,
|
||||
+ "Enable support for VGA arbitration on Intel HD IGD. (default: false)");
|
||||
+
|
||||
module_param_named(use_mmio_flip, i915.use_mmio_flip, int, 0600);
|
||||
MODULE_PARM_DESC(use_mmio_flip,
|
||||
"use MMIO flips (-1=never, 0=driver discretion [default], 1=always)");
|
||||
diff -rupN linux-3.17.old/drivers/gpu/drm/i915/intel_display.c linux-3.17/drivers/gpu/drm/i915/intel_display.c
|
||||
--- linux-3.17.old/drivers/gpu/drm/i915/intel_display.c 2014-10-05 17:23:04.000000000 -0200
|
||||
+++ linux-3.17/drivers/gpu/drm/i915/intel_display.c 2014-10-08 13:25:35.416920053 -0200
|
||||
@@ -12554,6 +12554,33 @@ static void i915_disable_vga(struct drm_
|
||||
POSTING_READ(vga_reg);
|
||||
}
|
||||
|
||||
+static void i915_enable_vga_mem(struct drm_device *dev)
|
||||
+{
|
||||
+ /* Enable VGA memory on Intel HD */
|
||||
+ if (i915.enable_hd_vgaarb && HAS_PCH_SPLIT(dev)) {
|
||||
+ vga_get_uninterruptible(dev->pdev, VGA_RSRC_LEGACY_IO);
|
||||
+ outb(inb(VGA_MSR_READ) | VGA_MSR_MEM_EN, VGA_MSR_WRITE);
|
||||
+ vga_set_legacy_decoding(dev->pdev, VGA_RSRC_LEGACY_IO |
|
||||
+ VGA_RSRC_LEGACY_MEM |
|
||||
+ VGA_RSRC_NORMAL_IO |
|
||||
+ VGA_RSRC_NORMAL_MEM);
|
||||
+ vga_put(dev->pdev, VGA_RSRC_LEGACY_IO);
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+void i915_disable_vga_mem(struct drm_device *dev)
|
||||
+{
|
||||
+ /* Disable VGA memory on Intel HD */
|
||||
+ if (i915.enable_hd_vgaarb && HAS_PCH_SPLIT(dev)) {
|
||||
+ vga_get_uninterruptible(dev->pdev, VGA_RSRC_LEGACY_IO);
|
||||
+ outb(inb(VGA_MSR_READ) & ~VGA_MSR_MEM_EN, VGA_MSR_WRITE);
|
||||
+ vga_set_legacy_decoding(dev->pdev, VGA_RSRC_LEGACY_IO |
|
||||
+ VGA_RSRC_NORMAL_IO |
|
||||
+ VGA_RSRC_NORMAL_MEM);
|
||||
+ vga_put(dev->pdev, VGA_RSRC_LEGACY_IO);
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
void intel_modeset_init_hw(struct drm_device *dev)
|
||||
{
|
||||
intel_prepare_ddi(dev);
|
||||
@@ -12891,6 +12918,7 @@ void i915_redisable_vga_power_on(struct
|
||||
if (!(I915_READ(vga_reg) & VGA_DISP_DISABLE)) {
|
||||
DRM_DEBUG_KMS("Something enabled VGA plane, disabling it\n");
|
||||
i915_disable_vga(dev);
|
||||
+ i915_disable_vga_mem(dev);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13144,6 +13172,8 @@ void intel_modeset_cleanup(struct drm_de
|
||||
|
||||
intel_disable_fbc(dev);
|
||||
|
||||
+ i915_enable_vga_mem(dev);
|
||||
+
|
||||
intel_disable_gt_powersave(dev);
|
||||
|
||||
ironlake_teardown_rc6(dev);
|
||||
diff -rupN linux-3.17.old/drivers/gpu/drm/i915/intel_drv.h linux-3.17/drivers/gpu/drm/i915/intel_drv.h
|
||||
--- linux-3.17.old/drivers/gpu/drm/i915/intel_drv.h 2014-10-05 17:23:04.000000000 -0200
|
||||
+++ linux-3.17/drivers/gpu/drm/i915/intel_drv.h 2014-10-08 13:25:35.416920053 -0200
|
||||
@@ -1102,4 +1102,6 @@ int intel_sprite_get_colorkey(struct drm
|
||||
/* intel_tv.c */
|
||||
void intel_tv_init(struct drm_device *dev);
|
||||
|
||||
+extern void i915_disable_vga_mem(struct drm_device *dev);
|
||||
+
|
||||
#endif /* __INTEL_DRV_H__ */
|
||||
diff -rupN linux-3.17.old/include/linux/vgaarb.h linux-3.17/include/linux/vgaarb.h
|
||||
--- linux-3.17.old/include/linux/vgaarb.h 2014-10-05 17:23:04.000000000 -0200
|
||||
+++ linux-3.17/include/linux/vgaarb.h 2014-10-08 13:25:35.426920046 -0200
|
||||
@@ -65,8 +65,15 @@ struct pci_dev;
|
||||
* out of the arbitration process (and can be safe to take
|
||||
* interrupts at any time.
|
||||
*/
|
||||
+#if defined(CONFIG_VGA_ARB)
|
||||
extern void vga_set_legacy_decoding(struct pci_dev *pdev,
|
||||
unsigned int decodes);
|
||||
+#else
|
||||
+static inline void vga_set_legacy_decoding(struct pci_dev *pdev,
|
||||
+ unsigned int decodes)
|
||||
+{
|
||||
+}
|
||||
+#endif
|
||||
|
||||
/**
|
||||
* vga_get - acquire & locks VGA resources
|
37
linux.install
Normal file
37
linux.install
Normal file
@ -0,0 +1,37 @@
|
||||
# arg 1: the new package version
|
||||
# arg 2: the old package version
|
||||
|
||||
KERNEL_NAME=
|
||||
KERNEL_VERSION=
|
||||
|
||||
post_install () {
|
||||
# updating module dependencies
|
||||
echo ">>> Updating module dependencies. Please wait ..."
|
||||
depmod ${KERNEL_VERSION}
|
||||
echo ">>> Generating initial ramdisk, using mkinitcpio. Please wait..."
|
||||
mkinitcpio -p linux${KERNEL_NAME}
|
||||
}
|
||||
|
||||
post_upgrade() {
|
||||
if findmnt --fstab -uno SOURCE /boot &>/dev/null && ! mountpoint -q /boot; then
|
||||
echo "WARNING: /boot appears to be a separate partition but is not mounted."
|
||||
fi
|
||||
|
||||
# updating module dependencies
|
||||
echo ">>> Updating module dependencies. Please wait ..."
|
||||
depmod ${KERNEL_VERSION}
|
||||
echo ">>> Generating initial ramdisk, using mkinitcpio. Please wait..."
|
||||
mkinitcpio -p linux${KERNEL_NAME}
|
||||
|
||||
if [ $(vercmp $2 3.13) -lt 0 ]; then
|
||||
echo ">>> WARNING: AT keyboard support is no longer built into the kernel."
|
||||
echo ">>> In order to use your keyboard during early init, you MUST"
|
||||
echo ">>> include the 'keyboard' hook in your mkinitcpio.conf."
|
||||
fi
|
||||
}
|
||||
|
||||
post_remove() {
|
||||
# also remove the compat symlinks
|
||||
rm -f boot/initramfs-linux${KERNEL_NAME}.img
|
||||
rm -f boot/initramfs-linux${KERNEL_NAME}-fallback.img
|
||||
}
|
14
linux.preset
Normal file
14
linux.preset
Normal file
@ -0,0 +1,14 @@
|
||||
# mkinitcpio preset file for the 'linux' package
|
||||
|
||||
ALL_config="/etc/mkinitcpio.conf"
|
||||
ALL_kver="/boot/vmlinuz-linux"
|
||||
|
||||
PRESETS=('default' 'fallback')
|
||||
|
||||
#default_config="/etc/mkinitcpio.conf"
|
||||
default_image="/boot/initramfs-linux.img"
|
||||
#default_options=""
|
||||
|
||||
#fallback_config="/etc/mkinitcpio.conf"
|
||||
fallback_image="/boot/initramfs-linux-fallback.img"
|
||||
fallback_options="-S autodetect"
|
147
override_for_missing_acs_capabilities.patch
Normal file
147
override_for_missing_acs_capabilities.patch
Normal file
@ -0,0 +1,147 @@
|
||||
diff -rupN linux-3.15.old/Documentation/kernel-parameters.txt linux-3.15/Documentation/kernel-parameters.txt
|
||||
--- linux-3.15.old/Documentation/kernel-parameters.txt 2014-06-08 15:19:54.000000000 -0300
|
||||
+++ linux-3.15/Documentation/kernel-parameters.txt 2014-06-09 18:05:31.744055580 -0300
|
||||
@@ -2554,6 +2554,16 @@ bytes respectively. Such letter suffixes
|
||||
nomsi Do not use MSI for native PCIe PME signaling (this makes
|
||||
all PCIe root ports use INTx for all services).
|
||||
|
||||
+ pcie_acs_override =
|
||||
+ [PCIE] Override missing PCIe ACS support for:
|
||||
+ downstream
|
||||
+ All downstream ports - full ACS capabilties
|
||||
+ multifunction
|
||||
+ All multifunction devices - multifunction ACS subset
|
||||
+ id:nnnn:nnnn
|
||||
+ Specfic device - full ACS capabilities
|
||||
+ Specified as vid:did (vendor/device ID) in hex
|
||||
+
|
||||
pcmv= [HW,PCMCIA] BadgePAD 4
|
||||
|
||||
pd_ignore_unused
|
||||
diff -rupN linux-3.15.old/drivers/pci/quirks.c linux-3.15/drivers/pci/quirks.c
|
||||
--- linux-3.15.old/drivers/pci/quirks.c 2014-06-08 15:19:54.000000000 -0300
|
||||
+++ linux-3.15/drivers/pci/quirks.c 2014-06-09 18:06:36.688743183 -0300
|
||||
@@ -3384,6 +3384,107 @@ struct pci_dev *pci_get_dma_source(struc
|
||||
return pci_dev_get(dev);
|
||||
}
|
||||
|
||||
+static bool acs_on_downstream;
|
||||
+static bool acs_on_multifunction;
|
||||
+
|
||||
+#define NUM_ACS_IDS 16
|
||||
+struct acs_on_id {
|
||||
+ unsigned short vendor;
|
||||
+ unsigned short device;
|
||||
+};
|
||||
+static struct acs_on_id acs_on_ids[NUM_ACS_IDS];
|
||||
+static u8 max_acs_id;
|
||||
+
|
||||
+static __init int pcie_acs_override_setup(char *p)
|
||||
+{
|
||||
+ if (!p)
|
||||
+ return -EINVAL;
|
||||
+
|
||||
+ while (*p) {
|
||||
+ if (!strncmp(p, "downstream", 10))
|
||||
+ acs_on_downstream = true;
|
||||
+ if (!strncmp(p, "multifunction", 13))
|
||||
+ acs_on_multifunction = true;
|
||||
+ if (!strncmp(p, "id:", 3)) {
|
||||
+ char opt[5];
|
||||
+ int ret;
|
||||
+ long val;
|
||||
+
|
||||
+ if (max_acs_id >= NUM_ACS_IDS - 1) {
|
||||
+ pr_warn("Out of PCIe ACS override slots (%d)\n",
|
||||
+ NUM_ACS_IDS);
|
||||
+ goto next;
|
||||
+ }
|
||||
+
|
||||
+ p += 3;
|
||||
+ snprintf(opt, 5, "%s", p);
|
||||
+ ret = kstrtol(opt, 16, &val);
|
||||
+ if (ret) {
|
||||
+ pr_warn("PCIe ACS ID parse error %d\n", ret);
|
||||
+ goto next;
|
||||
+ }
|
||||
+ acs_on_ids[max_acs_id].vendor = val;
|
||||
+
|
||||
+ p += strcspn(p, ":");
|
||||
+ if (*p != ':') {
|
||||
+ pr_warn("PCIe ACS invalid ID\n");
|
||||
+ goto next;
|
||||
+ }
|
||||
+
|
||||
+ p++;
|
||||
+ snprintf(opt, 5, "%s", p);
|
||||
+ ret = kstrtol(opt, 16, &val);
|
||||
+ if (ret) {
|
||||
+ pr_warn("PCIe ACS ID parse error %d\n", ret);
|
||||
+ goto next;
|
||||
+ }
|
||||
+ acs_on_ids[max_acs_id].device = val;
|
||||
+ max_acs_id++;
|
||||
+ }
|
||||
+next:
|
||||
+ p += strcspn(p, ",");
|
||||
+ if (*p == ',')
|
||||
+ p++;
|
||||
+ }
|
||||
+
|
||||
+ if (acs_on_downstream || acs_on_multifunction || max_acs_id)
|
||||
+ pr_warn("Warning: PCIe ACS overrides enabled; This may allow non-IOMMU protected peer-to-peer DMA\n");
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+early_param("pcie_acs_override", pcie_acs_override_setup);
|
||||
+
|
||||
+static int pcie_acs_overrides(struct pci_dev *dev, u16 acs_flags)
|
||||
+{
|
||||
+ int i;
|
||||
+
|
||||
+ /* Never override ACS for legacy devices or devices with ACS caps */
|
||||
+ if (!pci_is_pcie(dev) ||
|
||||
+ pci_find_ext_capability(dev, PCI_EXT_CAP_ID_ACS))
|
||||
+ return -ENOTTY;
|
||||
+
|
||||
+ for (i = 0; i < max_acs_id; i++)
|
||||
+ if (acs_on_ids[i].vendor == dev->vendor &&
|
||||
+ acs_on_ids[i].device == dev->device)
|
||||
+ return 1;
|
||||
+
|
||||
+ switch (pci_pcie_type(dev)) {
|
||||
+ case PCI_EXP_TYPE_DOWNSTREAM:
|
||||
+ case PCI_EXP_TYPE_ROOT_PORT:
|
||||
+ if (acs_on_downstream)
|
||||
+ return 1;
|
||||
+ break;
|
||||
+ case PCI_EXP_TYPE_ENDPOINT:
|
||||
+ case PCI_EXP_TYPE_UPSTREAM:
|
||||
+ case PCI_EXP_TYPE_LEG_END:
|
||||
+ case PCI_EXP_TYPE_RC_END:
|
||||
+ if (acs_on_multifunction && dev->multifunction)
|
||||
+ return 1;
|
||||
+ }
|
||||
+
|
||||
+ return -ENOTTY;
|
||||
+}
|
||||
+
|
||||
/*
|
||||
* AMD has indicated that the devices below do not support peer-to-peer
|
||||
* in any system where they are found in the southbridge with an AMD
|
||||
@@ -3483,6 +3584,7 @@ static int pci_quirk_intel_pch_acs(struc
|
||||
return acs_flags & ~flags ? 0 : 1;
|
||||
}
|
||||
|
||||
+
|
||||
static const struct pci_dev_acs_enabled {
|
||||
u16 vendor;
|
||||
u16 device;
|
||||
@@ -3495,6 +3597,7 @@ static const struct pci_dev_acs_enabled
|
||||
{ PCI_VENDOR_ID_ATI, 0x4384, pci_quirk_amd_sb_acs },
|
||||
{ PCI_VENDOR_ID_ATI, 0x4399, pci_quirk_amd_sb_acs },
|
||||
{ PCI_VENDOR_ID_INTEL, PCI_ANY_ID, pci_quirk_intel_pch_acs },
|
||||
+ { PCI_ANY_ID, PCI_ANY_ID, pcie_acs_overrides },
|
||||
{ 0 }
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user