commit: 9b62c3f713bdb9ce280e520279818d3298b1717e
Author: Joshua Kinard <kumba <AT> gentoo <DOT> org>
AuthorDate: Sat Mar 18 18:13:25 2017 +0000
Commit: Joshua Kinard <kumba <AT> gentoo <DOT> org>
CommitDate: Sat Mar 18 18:18:17 2017 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=9b62c3f7
sys-kernel/mips-sources: Resolve Bug #586420
Merge eblit source into each ebuild to resolve Bug #586420.
Package-Manager: Portage-2.3.5, Repoman-2.3.2
.../files/eblits/err_disabled_mach-v1.eblit | 40 ---
.../eblits/err_only_one_mach_allowed-v1.eblit | 14 -
.../files/eblits/pkg_postinst-v2.eblit | 18 --
.../mips-sources/files/eblits/pkg_setup-v2.eblit | 61 ----
.../files/eblits/show_ip22_info-v3.eblit | 20 --
.../files/eblits/show_ip27_info-v4.eblit | 17 --
.../files/eblits/show_ip28_info-v1.eblit | 18 --
.../files/eblits/show_ip30_info-v5.eblit | 55 ----
.../files/eblits/show_ip32_info-v5.eblit | 25 --
.../mips-sources/files/eblits/src_unpack-v7.eblit | 67 -----
sys-kernel/mips-sources/mips-sources-4.4.43.ebuild | 334 ++++++++++++++++-----
sys-kernel/mips-sources/mips-sources-4.8.17.ebuild | 334 ++++++++++++++++-----
12 files changed, 508 insertions(+), 495 deletions(-)
diff --git a/sys-kernel/mips-sources/files/eblits/err_disabled_mach-v1.eblit
b/sys-kernel/mips-sources/files/eblits/err_disabled_mach-v1.eblit
deleted file mode 100644
index e9804bbec4e..00000000000
--- a/sys-kernel/mips-sources/files/eblits/err_disabled_mach-v1.eblit
+++ /dev/null
@@ -1,40 +0,0 @@
-# Copyright 1999-2017 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-
-# Eblit to check if a given machine is disabled or marked for testing.
-
-err_disabled_mach() {
- # Get args
- local m_name="${1}"
- local m_abbr="${2}"
- local m_use="${3}"
- local is_test="${4}"
-
- # Get stable version, if exists
- local stable_ver="SV_${m_abbr}"
- stable_ver="${!stable_ver}"
-
- # See if this machine needs a USE passed or skip dying
- local has_use
- [ ! -z "${m_use}" -a "${m_use}" != "skip" ] &&
has_use="USE=\"${m_use}\" "
-
- # Print error && (maybe) die
- echo -e ""
- if [ "${is_test}" != "test" ]; then
- eerror "${m_name} Support has been disabled in this ebuild"
- eerror "revision. If you wish to merge ${m_name} sources, then"
- eerror "run ${has_use}emerge =mips-sources-${stable_ver}"
- [ "${m_use}" != "skip" ] && die "${m_name} Support disabled."
- else
- ewarn "${m_name} Support has been marked as needing testing in
this"
- ewarn "ebuild revision. This usually means that any patches to
support"
- ewarn "${m_name} have been forward ported and maybe even
compile-tested,"
- ewarn "but not yet booted on real hardware, possibly due to a
lack of access"
- ewarn "to such hardware. If you happen to boot this kernel and
have no"
- ewarn "problems at all, then please inform the maintainer.
Otherwise, if"
- ewarn "experience a bug, an oops/panic, or some other oddity,
then please"
- ewarn "file a bug at bugs.gentoo.org, and assign it to the mips
team."
- fi
-
- return 0
-}
diff --git
a/sys-kernel/mips-sources/files/eblits/err_only_one_mach_allowed-v1.eblit
b/sys-kernel/mips-sources/files/eblits/err_only_one_mach_allowed-v1.eblit
deleted file mode 100644
index 0db21872599..00000000000
--- a/sys-kernel/mips-sources/files/eblits/err_only_one_mach_allowed-v1.eblit
+++ /dev/null
@@ -1,14 +0,0 @@
-# Copyright 1999-2017 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-
-# Eblit informing a user when they try to apply two machine patches to the
-# same tree. Most machine patches are exclusive to avoid conflicts.
-
-err_only_one_mach_allowed() {
- echo -e ""
- eerror "A patchset for a specific machine-type has already been
selected."
- eerror "No other patches for machines-types are permitted. You will
need a"
- eerror "separate copy of the kernel sources for each different
machine-type"
- eerror "you want to build a kernel for."
- die "Only one machine-type patchset allowed"
-}
diff --git a/sys-kernel/mips-sources/files/eblits/pkg_postinst-v2.eblit
b/sys-kernel/mips-sources/files/eblits/pkg_postinst-v2.eblit
deleted file mode 100644
index 83d2214c4fc..00000000000
--- a/sys-kernel/mips-sources/files/eblits/pkg_postinst-v2.eblit
+++ /dev/null
@@ -1,18 +0,0 @@
-# Copyright 1999-2017 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-
-# Eblit that handles binpkg postinst tasks.
-# In this case, it sets up the /usr/src/linux symlink.
-
-eblit-mips-sources-pkg_postinst() {
- # Symlink /usr/src/linux as appropriate
- local my_ksrc="${S##*/}"
- for x in {ip27,ip28,ip30}; do
- use ${x} && my_ksrc="${my_ksrc}.${x}"
- done
-
- if [ ! -e "${ROOT}usr/src/linux" ]; then
- rm -f "${ROOT}usr/src/linux"
- ln -sf "${my_ksrc}" "${ROOT}/usr/src/linux"
- fi
-}
diff --git a/sys-kernel/mips-sources/files/eblits/pkg_setup-v2.eblit
b/sys-kernel/mips-sources/files/eblits/pkg_setup-v2.eblit
deleted file mode 100644
index 4a23036aba2..00000000000
--- a/sys-kernel/mips-sources/files/eblits/pkg_setup-v2.eblit
+++ /dev/null
@@ -1,61 +0,0 @@
-# Copyright 1999-2017 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-
-# Eblit to check our USE flags for machine-specific flags and give appropriate
-# information, warnings, or errors to the user.
-
-# Some machine patches are mutually-exclusive to avoid conflicts:
-# Affected: ip27 ip28 ip30
-# Not Affected: ip22 ip32
-
-eblit-mips-sources-pkg_setup() {
- local arch_is_selected="no"
- local m_ip m_enable m_name
-
- # Exclusive machine patchsets
- # These are not allowed to be mixed together, thus only one of them may
be applied
- # to a tree per merge.
- for x in
\
- "ip27 SGI Origin 200/2000"
\
- "ip28 SGI Indigo2 Impact R10000"
\
- "ip30 SGI Octane"
- do
- set -- ${x} # Set positional params
- m_ip="${1}" # Grab the first param (HW IP for SGI)
- shift # Shift the positions
- m_name="${*}" # Get the rest (Name)
-
- if use ${m_ip}; then
- # Fetch the value indiciating if the machine is enabled
or not
- m_enable="DO_${m_ip/ip/IP}"
- m_enable="${!m_enable}"
-
- # Make sure only one of these exclusive machine patches
is selected
- [ "${arch_is_selected}" = "no" ]
\
- && arch_is_selected="yes"
\
- || err_only_one_mach_allowed
-
- # Is the machine support disabled or marked as needing
testing?
- [ "${m_enable}" = "test" ]
\
- && err_disabled_mach "${m_name}"
"${m_ip/ip/IP}" "${m_ip}" "test"
- [ "${m_enable}" = "no" ]
\
- && err_disabled_mach "${m_name}"
"${m_ip/ip/IP}" "${m_ip}"
-
- # Show relevant information about the machine
- show_${m_ip}_info
- fi
- done
-
- # All other systems that don't have a USE flag go here
- # These systems have base-line support included in linux-mips git, so
- # instead of failing, if disabled, we simply warn the user
- if [ "${arch_is_selected}" = "no" ]; then
- [ "${DO_IP22}" = "no" ]
\
- && err_disabled_mach "SGI Indy/Indigo2 R4x00" "IP22"
"skip" \
- || show_ip22_info
- [ "${DO_IP32}" = "no" ]
\
- && err_disabled_mach "SGI O2" "IP32" "skip"
\
- || show_ip32_info
-
- fi
-}
diff --git a/sys-kernel/mips-sources/files/eblits/show_ip22_info-v3.eblit
b/sys-kernel/mips-sources/files/eblits/show_ip22_info-v3.eblit
deleted file mode 100644
index 48656b069fe..00000000000
--- a/sys-kernel/mips-sources/files/eblits/show_ip22_info-v3.eblit
+++ /dev/null
@@ -1,20 +0,0 @@
-# Copyright 1999-2017 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-
-# Eblit with information/warnings for IP22 (Indy/Indigo2 R4x00) users.
-#
-# If you need to add whitespace for formatting in 'einfo', 'ewarn', or
'eerror', use
-# \040 for a space instead of the standard space. These functions will strip
-# redundant white space.
-
-show_ip22_info() {
- echo -e ""
- einfo "IP22 systems with an R5000 processor should work with this
release."
- einfo "The R4x00 series of processors tend to be rather flaky,
especially the"
- einfo "R4600. If you have to run an R4x00 processor, then try to use
an R4400."
- einfo ""
- einfo "Some Notes:"
- einfo "\t- Supported graphics card right now is Newport (XL)."
- einfo "\t- A driver for Extreme (XZ) does not exist at present."
- echo -e ""
-}
diff --git a/sys-kernel/mips-sources/files/eblits/show_ip27_info-v4.eblit
b/sys-kernel/mips-sources/files/eblits/show_ip27_info-v4.eblit
deleted file mode 100644
index 07bb20e9e06..00000000000
--- a/sys-kernel/mips-sources/files/eblits/show_ip27_info-v4.eblit
+++ /dev/null
@@ -1,17 +0,0 @@
-# Copyright 1999-2017 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-
-# Eblit with information/warnings for IP27 (Origin 200/2000/Onyx2) users.
-#
-# If you need to add whitespace for formatting in 'einfo', 'ewarn', or
'eerror', use
-# \040 for a space instead of the standard space. These functions will strip
-# redundant white space.
-
-show_ip27_info() {
- echo -e ""
- ewarn "Heavy disk I/O on recent kernels may randomly trigger a
VM_BUG_ON_PAGE()"
- ewarn "in move_freepages() in mm/page_alloc.c. The exact trigger cause
is"
- ewarn "unknown at this time. Please report any oops messages from this"
- ewarn "bug to bugs.gentoo.org (assign to [email protected])"
- echo -e ""
-}
diff --git a/sys-kernel/mips-sources/files/eblits/show_ip28_info-v1.eblit
b/sys-kernel/mips-sources/files/eblits/show_ip28_info-v1.eblit
deleted file mode 100644
index 90648ee5340..00000000000
--- a/sys-kernel/mips-sources/files/eblits/show_ip28_info-v1.eblit
+++ /dev/null
@@ -1,18 +0,0 @@
-# Copyright 1999-2017 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-
-# Eblit with information/warnings for IP28 (Indigo2 Impact R10000) users.
-#
-# If you need to add whitespace for formatting in 'einfo', 'ewarn', or
'eerror', use
-# \040 for a space instead of the standard space. These functions will strip
-# redundant white space.
-
-show_ip28_info() {
- echo -e ""
- einfo "Support for the Indigo2 Impact R10000 is now in the mainline
kernel. However,"
- einfo "due to the R10000 Speculative Execution issue that exists with
this machine,"
- einfo "nothing is guaranteed to work correctly. Consider enabling
${HILITE}CONFIG_KALLSYMS${NORMAL}"
- einfo "in your kernel so that if the machine Oopes, you'll be able to
provide valuable"
- einfo "feedback that can be used to trace down the crash."
- echo -e ""
-}
diff --git a/sys-kernel/mips-sources/files/eblits/show_ip30_info-v5.eblit
b/sys-kernel/mips-sources/files/eblits/show_ip30_info-v5.eblit
deleted file mode 100644
index 960f45781d8..00000000000
--- a/sys-kernel/mips-sources/files/eblits/show_ip30_info-v5.eblit
+++ /dev/null
@@ -1,55 +0,0 @@
-# Copyright 1999-2017 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-
-# Eblit with information/warnings for IP30 (Octane) users.
-#
-# If you need to add whitespace for formatting in 'einfo', 'ewarn', or
'eerror', use
-# \040 for a space instead of the standard space. These functions will strip
-# redundant white space.
-
-show_ip30_info() {
- echo -e ""
- eerror "Things that DON'T work:"
- eerror "\t- Do not use CONFIG_SLUB, otherwise, you'll get errors when
booting"
- eerror "\t\040\040regarding duplicate /sys/kernel/slab/* entries in
sysfs."
- eerror "\t- Impact (MGRAS) Xorg driver no longer functions due to
severe bitrot."
- eerror "\t- Octane is limited to a maximum of 2GB of memory right now
due to a"
- eerror "\t\040\040hardware quirk in the BRIDGE PCI chip that limits
BRIDGE DMA"
- eerror "\t\040\040addresses to 31-bits when converted into physical
addresses."
- eerror "\t\040\040Patches that attempt to fix the issue are highly
welcome."
- echo -e ""
- ewarn "Things that might work, but have problems, or are unknown:"
- ewarn "\t- CONFIG_TRANSPARENT_HUGEPAGE should work now, but there may
still be"
- ewarn "\t\040\040intermittent issues. Additionally, CONFIG_HUGETLBFS
must also be"
- ewarn "\t\040\040selected for hugepages to work. If use of this
feature continues"
- ewarn "\t\040\040to trigger random Instruction Bus Errors (IBEs), then
it is best to"
- ewarn "\t\040\040disable the functionality and perform a cold reset of
the machine"
- ewarn "\t\040\040after powering it down for at least 30 seconds."
- ewarn "\t- Serial support on the Octane uses a very basic UART driver
that drives"
- ewarn "\t\040\040the 16550A chip on the IOC3 directly. It does not use
interrupts,"
- ewarn "\t\040\040only a polling routine on a timer, which makes it slow
and CPU-"
- ewarn "\t\040\040intensive. The baud rate is limited to no more than
38.4kbps on"
- ewarn "\t\040\040this driver. Patches for getting the Altix IOC3
serial driver to"
- ewarn "\t\040\040work (which uses DMA and supports faster baud rates)
are welcome."
- ewarn "\t- UHCI Cards are known to have issues, but should still
function."
- ewarn "\t\040\040This issue primarily manifests itself when using
pl2303 USB->Serial"
- ewarn "\t\040\040adapters."
- ewarn "\t- MENET boards appear to have the four ethernet ports
detected, however"
- ewarn "\t\040\040the six serial ports don't appear to get picked up by
the IOC3"
- ewarn "\t\040\040UART driver. The NIC part number is also not read
correctly"
- ewarn "\t\040\040from the four Number-In-a-Cans. Additional testing
would be"
- ewarn "\t\040\040appreciated and patches welcome."
- ewarn "\t- Other XIO-based devices, like various Impact addons, remain
untested"
- ewarn "\t\040\040and are not guaranteed to work. This applies to
various digital"
- ewarn "\t\040\040video conversion boards as well."
- echo -e ""
- einfo "Things that DO work:"
- einfo "\t- SMP works again, celebrate!"
- einfo "\t- Impact (MGRAS) console only."
- einfo "\t- VPro (Odyssey) console only (no X driver exists yet)."
- einfo "\t- PCI Card Cages should work for many devices, except certain
types like"
- einfo "\t\040\040PCI-to-PCI bridges (USB hubs, USB flash card readers
for example)."
- einfo "\t- SCSI, RTC, basic PCI, IOC3 Ethernet, keyboard, and mouse.
Please"
- einfo "\t\040\040report any problems with these devices."
- echo -e ""
-}
diff --git a/sys-kernel/mips-sources/files/eblits/show_ip32_info-v5.eblit
b/sys-kernel/mips-sources/files/eblits/show_ip32_info-v5.eblit
deleted file mode 100644
index dcc504297c0..00000000000
--- a/sys-kernel/mips-sources/files/eblits/show_ip32_info-v5.eblit
+++ /dev/null
@@ -1,25 +0,0 @@
-# Copyright 1999-2017 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-
-# Eblit with information/warnings for IP32 (O2) users.
-#
-# If you need to add whitespace for formatting in 'einfo', 'ewarn', or
'eerror', use
-# \040 for a space instead of the standard space. These functions will strip
-# redundant white space.
-
-show_ip32_info() {
- echo -e ""
- einfo "IP32 systems function well, however there are some notes:"
- einfo "\t- A sound driver now exists for IP32. Celebrate!"
- einfo "\t- Framebuffer console is limited to 4MB. Anything greater"
- einfo "\t\040\040specified when building the kernel will likely oops"
- einfo "\t\040\040or panic the kernel."
- einfo "\t- X support is limited to the generic fbdev driver. No X"
- einfo "\t\040\040gbefb driver exists for O2 yet. Feel free to submit"
- einfo "\t\040\040patches!"
- echo -e ""
-
- einfo "To Build 64bit kernels for SGI O2 (IP32) or SGI Indy/Indigo2
R4x00 (IP22)"
- einfo "systems, you need to use the ${GOOD}vmlinux.32${NORMAL} make
target."
- einfo "Once done, boot the ${GOOD}vmlinux.32${NORMAL} file (NOT
vmlinux)."
-}
diff --git a/sys-kernel/mips-sources/files/eblits/src_unpack-v7.eblit
b/sys-kernel/mips-sources/files/eblits/src_unpack-v7.eblit
deleted file mode 100644
index b22df4de4c2..00000000000
--- a/sys-kernel/mips-sources/files/eblits/src_unpack-v7.eblit
+++ /dev/null
@@ -1,67 +0,0 @@
-# Copyright 1999-2017 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-
-# Eblit to handle src_unpack.
-
-eblit-mips-sources-src_unpack() {
- # Unpack the kernel sources, update to the latest rev (if needed),
- # and apply the latest patch from linux-mips git.
- kernel-2_src_unpack
-
- # Unpack the mips-sources patchset to
${WORKDIR}/mips-patches-${BASE_KV}.
- echo -e ""
- cd "${WORKDIR}"
- unpack "${PN}-${BASE_KV}-patches-v${GENPATCHREV}.tar.xz"
-
- # Create a new folder called 'patch-symlinks' and create symlinks to
- # all mips-patches in there. If we want to exclude a patch, we'll
- # just delete the symlink instead of the actual patch.
- local psym="patch-symlinks"
- mkdir "${psym}"
- cd "${psym}"
- for x in ../mips-patches-${BASE_KV}/*.patch; do
- ln -s "${x}" "${x##../mips-patches-*/}"
- done
-
- # With symlinks created, setup the variables referencing external
- # machine patches and if a machine USE flag is enabled, then unset
- # its corresponding variable.
- # See 0000_README for the patch numbers and their meanings.
- local p_generic="51*"
- local p_ip27="52*" p_ip28="53*" p_ip30="54*"
- local p_xp="80*"
- use ip27 && unset p_generic p_ip27
- use ip28 && unset p_ip28
- use ip30 && unset p_generic p_ip30
- use experimental && unset p_xp
-
- # Remove symlinks for any patches that we don't want applied. We
- # do this by looping through all the above variables, and deleting
- # matching symlinks that point to the corresponding patches.
- # The remaining symlinks will be applied to the kernel source.
- #
- # $P_EXCLUDE is a new var that can be set in an ebuild to exclude
- # specific patches by wildcarding the patch number.
- local patchlist="${p_generic} ${p_ip27} ${p_ip28} ${p_ip30} ${p_xp}
${P_EXCLUDE}"
- for x in $patchlist;
- do rm -f "./${x}"
- done
-
- # Rename the source tree to match the linux-mips git checkout date and
- # machine type.
- local fkv="${F_KV%-*}"
- local v="${fkv}-${GITDATE}"
- for x in {ip27,ip28,ip30}; do
- use ${x} && v="${v}.${x}" && break
- done
- mv "${WORKDIR}/linux-${fkv/_/-}" "${WORKDIR}/linux-${v}" || die
- S="${WORKDIR}/linux-${v}"
-
- # Now go into the kernel source and patch it.
- cd "${S}"
- epatch "${WORKDIR}/${psym}"/*.patch
-
- # Set the EXTRAVERSION to linux-VERSION-mipsgit-GITDATE
- EXTRAVERSION="${EXTRAVERSION}-mipsgit-${GITDATE}"
- unpack_set_extraversion
-}
diff --git a/sys-kernel/mips-sources/mips-sources-4.4.43.ebuild
b/sys-kernel/mips-sources/mips-sources-4.4.43.ebuild
index 34cb43cbf2f..381b9ade9b0 100644
--- a/sys-kernel/mips-sources/mips-sources-4.4.43.ebuild
+++ b/sys-kernel/mips-sources/mips-sources-4.4.43.ebuild
@@ -73,102 +73,276 @@
UNIPATCH_LIST="${DISTDIR}/mipsgit-${BASE_KV}${KVE}-${GITDATE}.diff.xz"
#//------------------------------------------------------------------------------
-# Eblit Handling Functions
-#
-# They'll likely be superseded someday by better ideas, possibly elibs.
-
-# eblit-core
-# Usage: <function> [version]
-# Main eblit engine
-eblit-core() {
- local e v func=$1 ver=$2
- for v in ${ver:+-}${ver} -${PVR} -${PV} "" ; do
- e="${FILESDIR}/eblits/${func}${v}.eblit"
- if [[ -e ${e} ]] ; then
- . "${e}"
- [[ ${func} == pkg_* ]] && eval "${func}() { eblit-run
${func} ${ver} ; }"
- return 0
+err_disabled_mach() {
+ # Get args
+ local m_name="${1}"
+ local m_abbr="${2}"
+ local m_use="${3}"
+ local is_test="${4}"
+
+ # Get stable version, if exists
+ local stable_ver="SV_${m_abbr}"
+ stable_ver="${!stable_ver}"
+
+ # See if this machine needs a USE passed or skip dying
+ local has_use
+ [ ! -z "${m_use}" -a "${m_use}" != "skip" ] &&
has_use="USE=\"${m_use}\" "
+
+ # Print error && (maybe) die
+ echo -e ""
+ if [ "${is_test}" != "test" ]; then
+ eerror "${m_name} Support has been disabled in this ebuild"
+ eerror "revision. If you wish to merge ${m_name} sources, then"
+ eerror "run ${has_use}emerge =mips-sources-${stable_ver}"
+ [ "${m_use}" != "skip" ] && die "${m_name} Support disabled."
+ else
+ ewarn "${m_name} Support has been marked as needing testing in
this"
+ ewarn "ebuild revision. This usually means that any patches to
support"
+ ewarn "${m_name} have been forward ported and maybe even
compile-tested,"
+ ewarn "but not yet booted on real hardware, possibly due to a
lack of access"
+ ewarn "to such hardware. If you happen to boot this kernel and
have no"
+ ewarn "problems at all, then please inform the maintainer.
Otherwise, if"
+ ewarn "experience a bug, an oops/panic, or some other oddity,
then please"
+ ewarn "file a bug at bugs.gentoo.org, and assign it to the mips
team."
+ fi
+
+ return 0
+}
+
+err_only_one_mach_allowed() {
+ echo -e ""
+ eerror "A patchset for a specific machine-type has already been
selected."
+ eerror "No other patches for machines-types are permitted. You will
need a"
+ eerror "separate copy of the kernel sources for each different
machine-type"
+ eerror "you want to build a kernel for."
+ die "Only one machine-type patchset allowed"
+}
+
+pkg_postinst() {
+ # Symlink /usr/src/linux as appropriate
+ local my_ksrc="${S##*/}"
+ for x in {ip27,ip28,ip30}; do
+ use ${x} && my_ksrc="${my_ksrc}.${x}"
+ done
+
+ if [ ! -e "${ROOT}usr/src/linux" ]; then
+ rm -f "${ROOT}usr/src/linux"
+ ln -sf "${my_ksrc}" "${ROOT}/usr/src/linux"
+ fi
+}
+
+pkg_setup() {
+ local arch_is_selected="no"
+ local m_ip m_enable m_name
+
+ # Exclusive machine patchsets
+ # These are not allowed to be mixed together, thus only one of them may
be applied
+ # to a tree per merge.
+ for x in
\
+ "ip27 SGI Origin 200/2000"
\
+ "ip28 SGI Indigo2 Impact R10000"
\
+ "ip30 SGI Octane"
+ do
+ set -- ${x} # Set positional params
+ m_ip="${1}" # Grab the first param (HW IP for SGI)
+ shift # Shift the positions
+ m_name="${*}" # Get the rest (Name)
+
+ if use ${m_ip}; then
+ # Fetch the value indiciating if the machine is enabled
or not
+ m_enable="DO_${m_ip/ip/IP}"
+ m_enable="${!m_enable}"
+
+ # Make sure only one of these exclusive machine patches
is selected
+ [ "${arch_is_selected}" = "no" ]
\
+ && arch_is_selected="yes"
\
+ || err_only_one_mach_allowed
+
+ # Is the machine support disabled or marked as needing
testing?
+ [ "${m_enable}" = "test" ]
\
+ && err_disabled_mach "${m_name}"
"${m_ip/ip/IP}" "${m_ip}" "test"
+ [ "${m_enable}" = "no" ]
\
+ && err_disabled_mach "${m_name}"
"${m_ip/ip/IP}" "${m_ip}"
+
+ # Show relevant information about the machine
+ show_${m_ip}_info
fi
done
- return 1
+
+ # All other systems that don't have a USE flag go here
+ # These systems have base-line support included in linux-mips git, so
+ # instead of failing, if disabled, we simply warn the user
+ if [ "${arch_is_selected}" = "no" ]; then
+ [ "${DO_IP22}" = "no" ]
\
+ && err_disabled_mach "SGI Indy/Indigo2 R4x00" "IP22"
"skip" \
+ || show_ip22_info
+ [ "${DO_IP32}" = "no" ]
\
+ && err_disabled_mach "SGI O2" "IP32" "skip"
\
+ || show_ip32_info
+
+ fi
}
-# eblit-include
-# Usage: [--skip] <function> [version]
-# Includes an "eblit" -- a chunk of common code among ebuilds in a given
-# package so that its functions can be sourced and utilized within the
-# ebuild.
-eblit-include() {
- local skipable=false r=0
- [[ $1 == "--skip" ]] && skipable=true && shift
- [[ $1 == pkg_* ]] && skipable=true
-
- [[ -z $1 ]] && die "Usage: eblit-include <function> [version]"
- eblit-core $1 $2
- r="$?"
- ${skipable} && return 0
- [[ "$r" -gt "0" ]] && die "Could not locate requested eblit '$1' in
${FILESDIR}/eblits/"
+show_ip22_info() {
+ echo -e ""
+ einfo "IP22 systems with an R5000 processor should work with this
release."
+ einfo "The R4x00 series of processors tend to be rather flaky,
especially the"
+ einfo "R4600. If you have to run an R4x00 processor, then try to use
an R4400."
+ einfo ""
+ einfo "Some Notes:"
+ einfo "\t- Supported graphics card right now is Newport (XL)."
+ einfo "\t- A driver for Extreme (XZ) does not exist at present."
+ echo -e ""
}
-# eblit-run-maybe
-# Usage: <function>
-# Runs a function if it is defined in an eblit
-eblit-run-maybe() {
- [[ $(type -t "$@") == "function" ]] && "$@"
+show_ip27_info() {
+ echo -e ""
+ ewarn "Heavy disk I/O on recent kernels may randomly trigger a
VM_BUG_ON_PAGE()"
+ ewarn "in move_freepages() in mm/page_alloc.c. The exact trigger cause
is"
+ ewarn "unknown at this time. Please report any oops messages from this"
+ ewarn "bug to bugs.gentoo.org (assign to [email protected])"
+ echo -e ""
}
-# eblit-run
-# Usage: <function> [version]
-# Runs a function defined in an eblit
-eblit-run() {
- eblit-include --skip common "${*:2}"
- eblit-include "$@"
- eblit-run-maybe eblit-$1-pre
- eblit-${PN}-$1
- eblit-run-maybe eblit-$1-post
+show_ip28_info() {
+ echo -e ""
+ einfo "Support for the Indigo2 Impact R10000 is now in the mainline
kernel. However,"
+ einfo "due to the R10000 Speculative Execution issue that exists with
this machine,"
+ einfo "nothing is guaranteed to work correctly. Consider enabling
${HILITE}CONFIG_KALLSYMS${NORMAL}"
+ einfo "in your kernel so that if the machine Oopes, you'll be able to
provide valuable"
+ einfo "feedback that can be used to trace down the crash."
+ echo -e ""
}
-# eblit-pkg
-# Usage: <phase> [version]
-# Runs the pkg_* functions AND evals them so they're included in the binpkgs
-eblit-pkg() {
- [[ -z $1 ]] && die "Usage: eblit-pkg <phase> [version]"
- eblit-core pkg_$1 $2
+show_ip30_info() {
+ echo -e ""
+ eerror "Things that DON'T work:"
+ eerror "\t- Do not use CONFIG_SLUB, otherwise, you'll get errors when
booting"
+ eerror "\t\040\040regarding duplicate /sys/kernel/slab/* entries in
sysfs."
+ eerror "\t- Impact (MGRAS) Xorg driver no longer functions due to
severe bitrot."
+ eerror "\t- Octane is limited to a maximum of 2GB of memory right now
due to a"
+ eerror "\t\040\040hardware quirk in the BRIDGE PCI chip that limits
BRIDGE DMA"
+ eerror "\t\040\040addresses to 31-bits when converted into physical
addresses."
+ eerror "\t\040\040Patches that attempt to fix the issue are highly
welcome."
+ echo -e ""
+ ewarn "Things that might work, but have problems, or are unknown:"
+ ewarn "\t- CONFIG_TRANSPARENT_HUGEPAGE should work now, but there may
still be"
+ ewarn "\t\040\040intermittent issues. Additionally, CONFIG_HUGETLBFS
must also be"
+ ewarn "\t\040\040selected for hugepages to work. If use of this
feature continues"
+ ewarn "\t\040\040to trigger random Instruction Bus Errors (IBEs), then
it is best to"
+ ewarn "\t\040\040disable the functionality and perform a cold reset of
the machine"
+ ewarn "\t\040\040after powering it down for at least 30 seconds."
+ ewarn "\t- Serial support on the Octane uses a very basic UART driver
that drives"
+ ewarn "\t\040\040the 16550A chip on the IOC3 directly. It does not use
interrupts,"
+ ewarn "\t\040\040only a polling routine on a timer, which makes it slow
and CPU-"
+ ewarn "\t\040\040intensive. The baud rate is limited to no more than
38.4kbps on"
+ ewarn "\t\040\040this driver. Patches for getting the Altix IOC3
serial driver to"
+ ewarn "\t\040\040work (which uses DMA and supports faster baud rates)
are welcome."
+ ewarn "\t- UHCI Cards are known to have issues, but should still
function."
+ ewarn "\t\040\040This issue primarily manifests itself when using
pl2303 USB->Serial"
+ ewarn "\t\040\040adapters."
+ ewarn "\t- MENET boards appear to have the four ethernet ports
detected, however"
+ ewarn "\t\040\040the six serial ports don't appear to get picked up by
the IOC3"
+ ewarn "\t\040\040UART driver. The NIC part number is also not read
correctly"
+ ewarn "\t\040\040from the four Number-In-a-Cans. Additional testing
would be"
+ ewarn "\t\040\040appreciated and patches welcome."
+ ewarn "\t- Other XIO-based devices, like various Impact addons, remain
untested"
+ ewarn "\t\040\040and are not guaranteed to work. This applies to
various digital"
+ ewarn "\t\040\040video conversion boards as well."
+ echo -e ""
+ einfo "Things that DO work:"
+ einfo "\t- SMP works again, celebrate!"
+ einfo "\t- Impact (MGRAS) console only."
+ einfo "\t- VPro (Odyssey) console only (no X driver exists yet)."
+ einfo "\t- PCI Card Cages should work for many devices, except certain
types like"
+ einfo "\t\040\040PCI-to-PCI bridges (USB hubs, USB flash card readers
for example)."
+ einfo "\t- SCSI, RTC, basic PCI, IOC3 Ethernet, keyboard, and mouse.
Please"
+ einfo "\t\040\040report any problems with these devices."
+ echo -e ""
}
-#//------------------------------------------------------------------------------
+show_ip32_info() {
+ echo -e ""
+ einfo "IP32 systems function well, however there are some notes:"
+ einfo "\t- A sound driver now exists for IP32. Celebrate!"
+ einfo "\t- Framebuffer console is limited to 4MB. Anything greater"
+ einfo "\t\040\040specified when building the kernel will likely oops"
+ einfo "\t\040\040or panic the kernel."
+ einfo "\t- X support is limited to the generic fbdev driver. No X"
+ einfo "\t\040\040gbefb driver exists for O2 yet. Feel free to submit"
+ einfo "\t\040\040patches!"
+ echo -e ""
-load_eblit_funcs() {
- # This is a sanity check to avoid QA issues. It prevents
- # eblits from being referenced during metadata operations.
- [ -n "${MIPS_SOURCES_EBLITS_LOADED}" ] && return
-
- # All are in ${FILESDIR}/eblits
- # If a message for a given machine needs to change,
- # then we create a new eblit and increment the
- # version and reference it here.
- eblit-include err_disabled_mach v1
- eblit-include err_only_one_mach_allowed v1
- eblit-include show_ip22_info v3
- eblit-include show_ip27_info v4
- eblit-include show_ip28_info v1
- eblit-include show_ip30_info v5
- eblit-include show_ip32_info v5
-
- # This makes sure pkg_setup & pkg_postinst gets into any binpkg.
- # Neccessary because we can't guarantee FILESDIR is around for binpkgs.
- eblit-pkg setup v2
- eblit-pkg postinst v2
-
- # Eblit load complete
- MIPS_SOURCES_EBLITS_LOADED=1
+ einfo "To Build 64bit kernels for SGI O2 (IP32) or SGI Indy/Indigo2
R4x00 (IP22)"
+ einfo "systems, you need to use the ${GOOD}vmlinux.32${NORMAL} make
target."
+ einfo "Once done, boot the ${GOOD}vmlinux.32${NORMAL} file (NOT
vmlinux)."
}
-pkg_setup() {
- load_eblit_funcs
- pkg_setup
+src_unpack() {
+ # Unpack the kernel sources, update to the latest rev (if needed),
+ # and apply the latest patch from linux-mips git.
+ kernel-2_src_unpack
+
+ # Unpack the mips-sources patchset to
${WORKDIR}/mips-patches-${BASE_KV}.
+ echo -e ""
+ cd "${WORKDIR}"
+ unpack "${PN}-${BASE_KV}-patches-v${GENPATCHREV}.tar.xz"
+
+ # Create a new folder called 'patch-symlinks' and create symlinks to
+ # all mips-patches in there. If we want to exclude a patch, we'll
+ # just delete the symlink instead of the actual patch.
+ local psym="patch-symlinks"
+ mkdir "${psym}"
+ cd "${psym}"
+ for x in ../mips-patches-${BASE_KV}/*.patch; do
+ ln -s "${x}" "${x##../mips-patches-*/}"
+ done
+
+ # With symlinks created, setup the variables referencing external
+ # machine patches and if a machine USE flag is enabled, then unset
+ # its corresponding variable.
+ # See 0000_README for the patch numbers and their meanings.
+ local p_generic="51*"
+ local p_ip27="52*" p_ip28="53*" p_ip30="54*"
+ local p_xp="80*"
+ use ip27 && unset p_generic p_ip27
+ use ip28 && unset p_ip28
+ use ip30 && unset p_generic p_ip30
+ use experimental && unset p_xp
+
+ # Remove symlinks for any patches that we don't want applied. We
+ # do this by looping through all the above variables, and deleting
+ # matching symlinks that point to the corresponding patches.
+ # The remaining symlinks will be applied to the kernel source.
+ #
+ # $P_EXCLUDE is a new var that can be set in an ebuild to exclude
+ # specific patches by wildcarding the patch number.
+ local patchlist="${p_generic} ${p_ip27} ${p_ip28} ${p_ip30} ${p_xp}
${P_EXCLUDE}"
+ for x in $patchlist;
+ do rm -f "./${x}"
+ done
+
+ # Rename the source tree to match the linux-mips git checkout date and
+ # machine type.
+ local fkv="${F_KV%-*}"
+ local v="${fkv}-${GITDATE}"
+ for x in {ip27,ip28,ip30}; do
+ use ${x} && v="${v}.${x}" && break
+ done
+ mv "${WORKDIR}/linux-${fkv/_/-}" "${WORKDIR}/linux-${v}" || die
+ S="${WORKDIR}/linux-${v}"
+
+ # Set the EXTRAVERSION to linux-VERSION-mipsgit-GITDATE
+ EXTRAVERSION="${EXTRAVERSION}-mipsgit-${GITDATE}"
+ unpack_set_extraversion
}
-src_unpack() { eblit-run src_unpack v7 ; }
+src_prepare() {
+ local psym="patch-symlinks"
+
+ # Now go into the kernel source and patch it.
+ cd "${S}"
+ epatch "${WORKDIR}/${psym}"/*.patch
+}
#//------------------------------------------------------------------------------
diff --git a/sys-kernel/mips-sources/mips-sources-4.8.17.ebuild
b/sys-kernel/mips-sources/mips-sources-4.8.17.ebuild
index da4958e1e6f..9772b3e4f8f 100644
--- a/sys-kernel/mips-sources/mips-sources-4.8.17.ebuild
+++ b/sys-kernel/mips-sources/mips-sources-4.8.17.ebuild
@@ -73,102 +73,276 @@
UNIPATCH_LIST="${DISTDIR}/mipsgit-${BASE_KV}${KVE}-${GITDATE}.diff.xz"
#//------------------------------------------------------------------------------
-# Eblit Handling Functions
-#
-# They'll likely be superseded someday by better ideas, possibly elibs.
-
-# eblit-core
-# Usage: <function> [version]
-# Main eblit engine
-eblit-core() {
- local e v func=$1 ver=$2
- for v in ${ver:+-}${ver} -${PVR} -${PV} "" ; do
- e="${FILESDIR}/eblits/${func}${v}.eblit"
- if [[ -e ${e} ]] ; then
- . "${e}"
- [[ ${func} == pkg_* ]] && eval "${func}() { eblit-run
${func} ${ver} ; }"
- return 0
+err_disabled_mach() {
+ # Get args
+ local m_name="${1}"
+ local m_abbr="${2}"
+ local m_use="${3}"
+ local is_test="${4}"
+
+ # Get stable version, if exists
+ local stable_ver="SV_${m_abbr}"
+ stable_ver="${!stable_ver}"
+
+ # See if this machine needs a USE passed or skip dying
+ local has_use
+ [ ! -z "${m_use}" -a "${m_use}" != "skip" ] &&
has_use="USE=\"${m_use}\" "
+
+ # Print error && (maybe) die
+ echo -e ""
+ if [ "${is_test}" != "test" ]; then
+ eerror "${m_name} Support has been disabled in this ebuild"
+ eerror "revision. If you wish to merge ${m_name} sources, then"
+ eerror "run ${has_use}emerge =mips-sources-${stable_ver}"
+ [ "${m_use}" != "skip" ] && die "${m_name} Support disabled."
+ else
+ ewarn "${m_name} Support has been marked as needing testing in
this"
+ ewarn "ebuild revision. This usually means that any patches to
support"
+ ewarn "${m_name} have been forward ported and maybe even
compile-tested,"
+ ewarn "but not yet booted on real hardware, possibly due to a
lack of access"
+ ewarn "to such hardware. If you happen to boot this kernel and
have no"
+ ewarn "problems at all, then please inform the maintainer.
Otherwise, if"
+ ewarn "experience a bug, an oops/panic, or some other oddity,
then please"
+ ewarn "file a bug at bugs.gentoo.org, and assign it to the mips
team."
+ fi
+
+ return 0
+}
+
+err_only_one_mach_allowed() {
+ echo -e ""
+ eerror "A patchset for a specific machine-type has already been
selected."
+ eerror "No other patches for machines-types are permitted. You will
need a"
+ eerror "separate copy of the kernel sources for each different
machine-type"
+ eerror "you want to build a kernel for."
+ die "Only one machine-type patchset allowed"
+}
+
+pkg_postinst() {
+ # Symlink /usr/src/linux as appropriate
+ local my_ksrc="${S##*/}"
+ for x in {ip27,ip28,ip30}; do
+ use ${x} && my_ksrc="${my_ksrc}.${x}"
+ done
+
+ if [ ! -e "${ROOT}usr/src/linux" ]; then
+ rm -f "${ROOT}usr/src/linux"
+ ln -sf "${my_ksrc}" "${ROOT}/usr/src/linux"
+ fi
+}
+
+pkg_setup() {
+ local arch_is_selected="no"
+ local m_ip m_enable m_name
+
+ # Exclusive machine patchsets
+ # These are not allowed to be mixed together, thus only one of them may
be applied
+ # to a tree per merge.
+ for x in
\
+ "ip27 SGI Origin 200/2000"
\
+ "ip28 SGI Indigo2 Impact R10000"
\
+ "ip30 SGI Octane"
+ do
+ set -- ${x} # Set positional params
+ m_ip="${1}" # Grab the first param (HW IP for SGI)
+ shift # Shift the positions
+ m_name="${*}" # Get the rest (Name)
+
+ if use ${m_ip}; then
+ # Fetch the value indiciating if the machine is enabled
or not
+ m_enable="DO_${m_ip/ip/IP}"
+ m_enable="${!m_enable}"
+
+ # Make sure only one of these exclusive machine patches
is selected
+ [ "${arch_is_selected}" = "no" ]
\
+ && arch_is_selected="yes"
\
+ || err_only_one_mach_allowed
+
+ # Is the machine support disabled or marked as needing
testing?
+ [ "${m_enable}" = "test" ]
\
+ && err_disabled_mach "${m_name}"
"${m_ip/ip/IP}" "${m_ip}" "test"
+ [ "${m_enable}" = "no" ]
\
+ && err_disabled_mach "${m_name}"
"${m_ip/ip/IP}" "${m_ip}"
+
+ # Show relevant information about the machine
+ show_${m_ip}_info
fi
done
- return 1
+
+ # All other systems that don't have a USE flag go here
+ # These systems have base-line support included in linux-mips git, so
+ # instead of failing, if disabled, we simply warn the user
+ if [ "${arch_is_selected}" = "no" ]; then
+ [ "${DO_IP22}" = "no" ]
\
+ && err_disabled_mach "SGI Indy/Indigo2 R4x00" "IP22"
"skip" \
+ || show_ip22_info
+ [ "${DO_IP32}" = "no" ]
\
+ && err_disabled_mach "SGI O2" "IP32" "skip"
\
+ || show_ip32_info
+
+ fi
}
-# eblit-include
-# Usage: [--skip] <function> [version]
-# Includes an "eblit" -- a chunk of common code among ebuilds in a given
-# package so that its functions can be sourced and utilized within the
-# ebuild.
-eblit-include() {
- local skipable=false r=0
- [[ $1 == "--skip" ]] && skipable=true && shift
- [[ $1 == pkg_* ]] && skipable=true
-
- [[ -z $1 ]] && die "Usage: eblit-include <function> [version]"
- eblit-core $1 $2
- r="$?"
- ${skipable} && return 0
- [[ "$r" -gt "0" ]] && die "Could not locate requested eblit '$1' in
${FILESDIR}/eblits/"
+show_ip22_info() {
+ echo -e ""
+ einfo "IP22 systems with an R5000 processor should work with this
release."
+ einfo "The R4x00 series of processors tend to be rather flaky,
especially the"
+ einfo "R4600. If you have to run an R4x00 processor, then try to use
an R4400."
+ einfo ""
+ einfo "Some Notes:"
+ einfo "\t- Supported graphics card right now is Newport (XL)."
+ einfo "\t- A driver for Extreme (XZ) does not exist at present."
+ echo -e ""
}
-# eblit-run-maybe
-# Usage: <function>
-# Runs a function if it is defined in an eblit
-eblit-run-maybe() {
- [[ $(type -t "$@") == "function" ]] && "$@"
+show_ip27_info() {
+ echo -e ""
+ ewarn "Heavy disk I/O on recent kernels may randomly trigger a
VM_BUG_ON_PAGE()"
+ ewarn "in move_freepages() in mm/page_alloc.c. The exact trigger cause
is"
+ ewarn "unknown at this time. Please report any oops messages from this"
+ ewarn "bug to bugs.gentoo.org (assign to [email protected])"
+ echo -e ""
}
-# eblit-run
-# Usage: <function> [version]
-# Runs a function defined in an eblit
-eblit-run() {
- eblit-include --skip common "${*:2}"
- eblit-include "$@"
- eblit-run-maybe eblit-$1-pre
- eblit-${PN}-$1
- eblit-run-maybe eblit-$1-post
+show_ip28_info() {
+ echo -e ""
+ einfo "Support for the Indigo2 Impact R10000 is now in the mainline
kernel. However,"
+ einfo "due to the R10000 Speculative Execution issue that exists with
this machine,"
+ einfo "nothing is guaranteed to work correctly. Consider enabling
${HILITE}CONFIG_KALLSYMS${NORMAL}"
+ einfo "in your kernel so that if the machine Oopes, you'll be able to
provide valuable"
+ einfo "feedback that can be used to trace down the crash."
+ echo -e ""
}
-# eblit-pkg
-# Usage: <phase> [version]
-# Runs the pkg_* functions AND evals them so they're included in the binpkgs
-eblit-pkg() {
- [[ -z $1 ]] && die "Usage: eblit-pkg <phase> [version]"
- eblit-core pkg_$1 $2
+show_ip30_info() {
+ echo -e ""
+ eerror "Things that DON'T work:"
+ eerror "\t- Do not use CONFIG_SLUB, otherwise, you'll get errors when
booting"
+ eerror "\t\040\040regarding duplicate /sys/kernel/slab/* entries in
sysfs."
+ eerror "\t- Impact (MGRAS) Xorg driver no longer functions due to
severe bitrot."
+ eerror "\t- Octane is limited to a maximum of 2GB of memory right now
due to a"
+ eerror "\t\040\040hardware quirk in the BRIDGE PCI chip that limits
BRIDGE DMA"
+ eerror "\t\040\040addresses to 31-bits when converted into physical
addresses."
+ eerror "\t\040\040Patches that attempt to fix the issue are highly
welcome."
+ echo -e ""
+ ewarn "Things that might work, but have problems, or are unknown:"
+ ewarn "\t- CONFIG_TRANSPARENT_HUGEPAGE should work now, but there may
still be"
+ ewarn "\t\040\040intermittent issues. Additionally, CONFIG_HUGETLBFS
must also be"
+ ewarn "\t\040\040selected for hugepages to work. If use of this
feature continues"
+ ewarn "\t\040\040to trigger random Instruction Bus Errors (IBEs), then
it is best to"
+ ewarn "\t\040\040disable the functionality and perform a cold reset of
the machine"
+ ewarn "\t\040\040after powering it down for at least 30 seconds."
+ ewarn "\t- Serial support on the Octane uses a very basic UART driver
that drives"
+ ewarn "\t\040\040the 16550A chip on the IOC3 directly. It does not use
interrupts,"
+ ewarn "\t\040\040only a polling routine on a timer, which makes it slow
and CPU-"
+ ewarn "\t\040\040intensive. The baud rate is limited to no more than
38.4kbps on"
+ ewarn "\t\040\040this driver. Patches for getting the Altix IOC3
serial driver to"
+ ewarn "\t\040\040work (which uses DMA and supports faster baud rates)
are welcome."
+ ewarn "\t- UHCI Cards are known to have issues, but should still
function."
+ ewarn "\t\040\040This issue primarily manifests itself when using
pl2303 USB->Serial"
+ ewarn "\t\040\040adapters."
+ ewarn "\t- MENET boards appear to have the four ethernet ports
detected, however"
+ ewarn "\t\040\040the six serial ports don't appear to get picked up by
the IOC3"
+ ewarn "\t\040\040UART driver. The NIC part number is also not read
correctly"
+ ewarn "\t\040\040from the four Number-In-a-Cans. Additional testing
would be"
+ ewarn "\t\040\040appreciated and patches welcome."
+ ewarn "\t- Other XIO-based devices, like various Impact addons, remain
untested"
+ ewarn "\t\040\040and are not guaranteed to work. This applies to
various digital"
+ ewarn "\t\040\040video conversion boards as well."
+ echo -e ""
+ einfo "Things that DO work:"
+ einfo "\t- SMP works again, celebrate!"
+ einfo "\t- Impact (MGRAS) console only."
+ einfo "\t- VPro (Odyssey) console only (no X driver exists yet)."
+ einfo "\t- PCI Card Cages should work for many devices, except certain
types like"
+ einfo "\t\040\040PCI-to-PCI bridges (USB hubs, USB flash card readers
for example)."
+ einfo "\t- SCSI, RTC, basic PCI, IOC3 Ethernet, keyboard, and mouse.
Please"
+ einfo "\t\040\040report any problems with these devices."
+ echo -e ""
}
-#//------------------------------------------------------------------------------
+show_ip32_info() {
+ echo -e ""
+ einfo "IP32 systems function well, however there are some notes:"
+ einfo "\t- A sound driver now exists for IP32. Celebrate!"
+ einfo "\t- Framebuffer console is limited to 4MB. Anything greater"
+ einfo "\t\040\040specified when building the kernel will likely oops"
+ einfo "\t\040\040or panic the kernel."
+ einfo "\t- X support is limited to the generic fbdev driver. No X"
+ einfo "\t\040\040gbefb driver exists for O2 yet. Feel free to submit"
+ einfo "\t\040\040patches!"
+ echo -e ""
-load_eblit_funcs() {
- # This is a sanity check to avoid QA issues. It prevents
- # eblits from being referenced during metadata operations.
- [ -n "${MIPS_SOURCES_EBLITS_LOADED}" ] && return
-
- # All are in ${FILESDIR}/eblits
- # If a message for a given machine needs to change,
- # then we create a new eblit and increment the
- # version and reference it here.
- eblit-include err_disabled_mach v1
- eblit-include err_only_one_mach_allowed v1
- eblit-include show_ip22_info v3
- eblit-include show_ip27_info v4
- eblit-include show_ip28_info v1
- eblit-include show_ip30_info v5
- eblit-include show_ip32_info v5
-
- # This makes sure pkg_setup & pkg_postinst gets into any binpkg.
- # Neccessary because we can't guarantee FILESDIR is around for binpkgs.
- eblit-pkg setup v2
- eblit-pkg postinst v2
-
- # Eblit load complete
- MIPS_SOURCES_EBLITS_LOADED=1
+ einfo "To Build 64bit kernels for SGI O2 (IP32) or SGI Indy/Indigo2
R4x00 (IP22)"
+ einfo "systems, you need to use the ${GOOD}vmlinux.32${NORMAL} make
target."
+ einfo "Once done, boot the ${GOOD}vmlinux.32${NORMAL} file (NOT
vmlinux)."
}
-pkg_setup() {
- load_eblit_funcs
- pkg_setup
+src_unpack() {
+ # Unpack the kernel sources, update to the latest rev (if needed),
+ # and apply the latest patch from linux-mips git.
+ kernel-2_src_unpack
+
+ # Unpack the mips-sources patchset to
${WORKDIR}/mips-patches-${BASE_KV}.
+ echo -e ""
+ cd "${WORKDIR}"
+ unpack "${PN}-${BASE_KV}-patches-v${GENPATCHREV}.tar.xz"
+
+ # Create a new folder called 'patch-symlinks' and create symlinks to
+ # all mips-patches in there. If we want to exclude a patch, we'll
+ # just delete the symlink instead of the actual patch.
+ local psym="patch-symlinks"
+ mkdir "${psym}"
+ cd "${psym}"
+ for x in ../mips-patches-${BASE_KV}/*.patch; do
+ ln -s "${x}" "${x##../mips-patches-*/}"
+ done
+
+ # With symlinks created, setup the variables referencing external
+ # machine patches and if a machine USE flag is enabled, then unset
+ # its corresponding variable.
+ # See 0000_README for the patch numbers and their meanings.
+ local p_generic="51*"
+ local p_ip27="52*" p_ip28="53*" p_ip30="54*"
+ local p_xp="80*"
+ use ip27 && unset p_generic p_ip27
+ use ip28 && unset p_ip28
+ use ip30 && unset p_generic p_ip30
+ use experimental && unset p_xp
+
+ # Remove symlinks for any patches that we don't want applied. We
+ # do this by looping through all the above variables, and deleting
+ # matching symlinks that point to the corresponding patches.
+ # The remaining symlinks will be applied to the kernel source.
+ #
+ # $P_EXCLUDE is a new var that can be set in an ebuild to exclude
+ # specific patches by wildcarding the patch number.
+ local patchlist="${p_generic} ${p_ip27} ${p_ip28} ${p_ip30} ${p_xp}
${P_EXCLUDE}"
+ for x in $patchlist;
+ do rm -f "./${x}"
+ done
+
+ # Rename the source tree to match the linux-mips git checkout date and
+ # machine type.
+ local fkv="${F_KV%-*}"
+ local v="${fkv}-${GITDATE}"
+ for x in {ip27,ip28,ip30}; do
+ use ${x} && v="${v}.${x}" && break
+ done
+ mv "${WORKDIR}/linux-${fkv/_/-}" "${WORKDIR}/linux-${v}" || die
+ S="${WORKDIR}/linux-${v}"
+
+ # Set the EXTRAVERSION to linux-VERSION-mipsgit-GITDATE
+ EXTRAVERSION="${EXTRAVERSION}-mipsgit-${GITDATE}"
+ unpack_set_extraversion
}
-src_unpack() { eblit-run src_unpack v7 ; }
+src_prepare() {
+ local psym="patch-symlinks"
+
+ # Now go into the kernel source and patch it.
+ cd "${S}"
+ epatch "${WORKDIR}/${psym}"/*.patch
+}
#//------------------------------------------------------------------------------