Re: Server product kernel requirements
by Josh Boyer
On Wed, Oct 30, 2013 at 11:12 AM, Stephen Gallagher <sgallagh(a)redhat.com> wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> On 10/30/2013 11:10 AM, Simo Sorce wrote:
>> On Wed, 2013-10-30 at 10:16 -0400, Josh Boyer wrote:
>>> [ Resend with the right server mailing list address. Sorry
>>> kernel@ people.]
>>>
>>> Hi All,
>>>
>>> I realize the WG is just forming up and you have a lot of other
>>> items to cover for now, but I wanted to get this sent out and
>>> have people start thinking about it sooner rather than later.
>>>
>>> The kernel team is interested in what the Server WG sees as its
>>> requirements for the kernel package. Does today's kernel image
>>> mostly suit those needs already, or are there changes that would
>>> be beneficial?
>>>
>>> While you think about this, please keep in mind that the kernel
>>> team really wants to keep a single kernel package across all 3
>>> products as much as possible. We won't scale to providing
>>> multiple kernel packages or vmlinux binaries for each product.
>>> At the moment, we're essentially looking for a good "core" kernel
>>> package that suits cloud, server, and workstation and then at
>>> repackaging the drivers into subpackages where appropriate.
>>>
>>> If you have changes you'd like to see, please let us know what
>>> they are and the reasoning behind those changes. Hopefully we
>>> can work with all 3 WGs and come up with something suitable for
>>> everyone. Thanks for your time.
>>
>> Personally I think that as long as the kernel is modular and all
>> useful modules are available, the Server WG should not have trouble
>> with it.
>>
>> I guess the installation procedure (hence Anaconda) need to be
>> somewhat customizable so that the server image is by default a lot
>> friendlier to the type of hardware a server gets to use, and the
>> kind of defaults that make more sense for a server vs say desktop
>> or cloud.
>>
>> But I think all this can be built easily above a common kernel.
>>
>
>
> I agree as well. A common kernel is paramount.
OK, good. To be fair, I didn't think there would be many requirements
from the Server WG. Most of the packaging changes will likely be
driven by the Cloud WG. At the moment, it shouldn't be difficult for
Server to install both the small base kernel package and the larger
kernel-drivers subpackage (for example).
At the same time, it would be good to look over what the current
kernel is providing and see if you notice any glaring omissions in
either drivers or settings. Or at the very least, perhaps define what
kind of machines you will be targeting with the Server WG spin.
Massive 4096 multi-cored CPU machines with terabytes of DRAM and
petabytes of storage, or more commodity style hardware used in
heterogeneous environments, etc. Hopefully the impacts to the kernel
there will be minimal, but it would help us understand what you're
shooting for so we can keep it in mind.
josh
10 years, 5 months
Cloud product kernel requirements
by Josh Boyer
Hi All,
I realize the WG is just forming up and you have a lot of other items
to cover for now, but I wanted to get this sent out and have people
start thinking about it sooner rather than later.
The kernel team has heard in the past that the Cloud group would like
to see something of a more minimal kernel for usage in cloud images.
We'd like to hear the requirements for what this smaller image would
need to cover.
Right now, a default x86_64 kernel package on f20 is ~134MB installed.
Most of that is device drivers installed in /lib/modules/`uname -r`/.
The vmlinux binary is about 5MB and the initramfs (which is created
at install time and can actually vary quite widely depending on
various things) is about 11MB. Drivers can be trimmed to a degree,
but please keep in mind that the kernel is already relatively small
for the functionality it provides. For example, it is not much bigger
than glibc-common (119MB).
So, some caveats to keep in mind while you're thinking about this:
1) We're mostly talking about packaging here, not building a separate
cloud kernel package or vmlinux. The kernel team really wants to have
a single vmlinux across the 3 products if at all possible. We can't
scale to much else.
2) What usecases is the cloud image going to cover? E.g. is it just
virtio stuff, or will it also fit PCI passthru (which then requires
drivers for those PCI devices)?
3) What are the common provisioning requirements that are driving the
size reduction? (See comment about glibc-common. I would think
change is needed in multiple packages, not just the kernel.)
4) Other "cloudy" stuff that I'm entirely unaware of that might be
relevant. Explain it to me like I'm a child.
Thanks!
josh
10 years, 5 months
Re: [kernel] Add patch for i.MX6 Utilite device dtb, drop old exynos patch
by Josh Boyer
On Thu, Oct 24, 2013 at 3:29 PM, Peter Robinson
<pbrobinson(a)fedoraproject.org> wrote:
> commit ac67590916a449d1e71a791f6a0c3688251ec074
> Author: Peter Robinson <pbrobinson(a)gmail.com>
> Date: Thu Oct 24 20:29:40 2013 +0100
>
> Add patch for i.MX6 Utilite device dtb, drop old exynos patch
I thought we discussed on IRC that patches were going to get sent to
the list first?
> diff --git a/config-arm-generic b/config-arm-generic
> index 96a95e5..aaa88ee 100644
> --- a/config-arm-generic
> +++ b/config-arm-generic
> @@ -114,8 +114,6 @@ CONFIG_MFD_CORE=m
> CONFIG_SMC91X=m
> CONFIG_SMC911X=m
>
> -CONFIG_VIRTIO_CONSOLE=m
> -
Why did this get dropped? The commit message doesn't say.
> # CONFIG_CRYPTO_TEST is not set
> # CONFIG_TRANSPARENT_HUGEPAGE is not set
> # CONFIG_XEN is not set
> diff --git a/kernel.spec b/kernel.spec
> index d1ea97d..19e9e4e 100644
> --- a/kernel.spec
> +++ b/kernel.spec
> @@ -675,7 +675,6 @@ Patch15000: nowatchdog-on-virt.patch
> # lpae
> Patch21001: arm-lpae-ax88796.patch
> Patch21004: arm-sound-soc-samsung-dma-avoid-another-64bit-division.patch
> -Patch21005: arm-exynos-mp.patch
>
> # ARM omap
> Patch21010: arm-omap-load-tfp410.patch
> @@ -683,6 +682,10 @@ Patch21010: arm-omap-load-tfp410.patch
> # ARM tegra
> Patch21020: arm-tegra-usb-no-reset-linux33.patch
>
> +# ARM i.MX6
> +# http://www.spinics.net/lists/devicetree/msg08276.html
> +Patch21030: arm-imx6-utilite.patch
The link to the discussion is nice and I appreciate it. Though it
shows that changes have been requested, the patch isn't queued, and it
isn't really fully reviewed.
I don't understand the urgency in adding something that doesn't appear
to be ready according to upstream. Can you elaborate?
josh
10 years, 5 months
Re: [kernel] enable crash on other architectures
by Josh Boyer
On Tue, Nov 5, 2013 at 4:50 PM, Kyle McMartin <kyle(a)fedoraproject.org> wrote:
> commit 0a346ea31151e4f114eb0cdb3aa25a55f300bae5
> Author: Kyle McMartin <kyle(a)fedoraproject.org>
> Date: Tue Nov 5 16:51:00 2013 -0500
>
> enable crash on other architectures
Er, why? We've debated several times just dropping crash entirely.
Also, please post for review first.
> config-arm-generic | 2 +
> config-powerpc-generic | 2 +
> config-s390x | 2 +
> crash-driver.patch | 270 +++++++++++++++++++++++++++++++++++-------------
> kernel.spec | 3 +
> 5 files changed, 205 insertions(+), 74 deletions(-)
> ---
> diff --git a/config-arm-generic b/config-arm-generic
> index aaa88ee..a0cf6e6 100644
> --- a/config-arm-generic
> +++ b/config-arm-generic
> @@ -149,3 +149,5 @@ CONFIG_SMC911X=m
> # CONFIG_SCSI_IPS is not set
> # CONFIG_SCSI_CXGB3_ISCSI is not set
> # CONFIG_SCSI_CXGB4_ISCSI is not set
> +
> +CONFIG_CRASH=m
> diff --git a/config-powerpc-generic b/config-powerpc-generic
> index 2037e89..7ba1a5d 100644
> --- a/config-powerpc-generic
> +++ b/config-powerpc-generic
> @@ -379,3 +379,5 @@ CONFIG_BACKLIGHT_PWM=m
> CONFIG_CPU_IDLE_MULTIPLE_DRIVERS=n
>
> CONFIG_XZ_DEC_POWERPC=y
> +
> +CONFIG_CRASH=m
> diff --git a/config-s390x b/config-s390x
> index c81b679..f9f1f82 100644
> --- a/config-s390x
> +++ b/config-s390x
> @@ -277,3 +277,5 @@ CONFIG_SCM_BLOCK_CLUSTER_WRITE=y
> # CONFIG_IEEE802154_DRIVERS is not set
>
> # CONFIG_FMC is not set
> +
> +CONFIG_CRASH=m
> diff --git a/crash-driver.patch b/crash-driver.patch
> index a7b7b72..61c5dfd 100644
> --- a/crash-driver.patch
> +++ b/crash-driver.patch
> @@ -1,24 +1,57 @@
> -From f72d640713d01b3b704c6e84ab49b62f19fc9c22 Mon Sep 17 00:00:00 2001
> -From: Kyle McMartin <kyle(a)phobos.i.jkkm.org>
> -Date: Tue, 30 Mar 2010 00:16:25 -0400
> -Subject: [PATCH] dev-crash-driver.patch
> +From 9fcd8dd1ccc20ea8d466d48e887e92b832e22d56 Mon Sep 17 00:00:00 2001
> +From: Kyle McMartin <kyle(a)dreadnought.bos.jkkm.org>
> +Date: Tue, 5 Nov 2013 13:16:00 -0500
> +Subject: [PATCH] crash-driver
>
> ---
> - arch/ia64/include/asm/crash.h | 90 +++++++++++++++++++++++++++++
> - arch/ia64/kernel/ia64_ksyms.c | 3 +
> - arch/x86/include/asm/crash.h | 75 ++++++++++++++++++++++++
> - arch/x86/mm/ioremap.c | 2 +
> - drivers/char/Kconfig | 3 +
> - drivers/char/Makefile | 2 +
> - drivers/char/crash.c | 128 +++++++++++++++++++++++++++++++++++++++++
> - 7 files changed, 303 insertions(+), 0 deletions(-)
> + arch/arm/include/asm/crash.h | 6 ++
> + arch/arm64/include/asm/crash.h | 6 ++
> + arch/ia64/include/asm/crash.h | 90 +++++++++++++++++++++++++++
> + arch/ia64/kernel/ia64_ksyms.c | 3 +
> + arch/powerpc/include/asm/crash.h | 6 ++
> + arch/s390/include/asm/crash.h | 60 ++++++++++++++++++
> + arch/x86/include/asm/crash.h | 6 ++
> + drivers/char/Kconfig | 3 +
> + drivers/char/Makefile | 2 +
> + drivers/char/crash.c | 128 +++++++++++++++++++++++++++++++++++++++
> + include/asm-generic/crash.h | 72 ++++++++++++++++++++++
> + 11 files changed, 382 insertions(+)
> + create mode 100644 arch/arm/include/asm/crash.h
> + create mode 100644 arch/arm64/include/asm/crash.h
> create mode 100644 arch/ia64/include/asm/crash.h
> + create mode 100644 arch/powerpc/include/asm/crash.h
> + create mode 100644 arch/s390/include/asm/crash.h
> create mode 100644 arch/x86/include/asm/crash.h
> create mode 100644 drivers/char/crash.c
> + create mode 100644 include/asm-generic/crash.h
>
> +diff --git a/arch/arm/include/asm/crash.h b/arch/arm/include/asm/crash.h
> +new file mode 100644
> +index 0000000..1d2e537
> +--- /dev/null
> ++++ b/arch/arm/include/asm/crash.h
> +@@ -0,0 +1,6 @@
> ++#ifndef _ARM_CRASH_H
> ++#define _ARM_CRASH_H
> ++
> ++#include <asm-generic/crash.h>
> ++
> ++#endif /* _ARM_CRASH_H */
> +diff --git a/arch/arm64/include/asm/crash.h b/arch/arm64/include/asm/crash.h
> +new file mode 100644
> +index 0000000..a7fcc28
> +--- /dev/null
> ++++ b/arch/arm64/include/asm/crash.h
> +@@ -0,0 +1,6 @@
> ++#ifndef _ARM64_CRASH_H
> ++#define _ARM64_CRASH_H
> ++
> ++#include <asm-generic/crash.h>
> ++
> ++#endif /* _ARM64_CRASH_H */
> diff --git a/arch/ia64/include/asm/crash.h b/arch/ia64/include/asm/crash.h
> new file mode 100644
> -index 0000000..541af84
> +index 0000000..28bd955
> --- /dev/null
> +++ b/arch/ia64/include/asm/crash.h
> @@ -0,0 +1,90 @@
> @@ -68,7 +101,7 @@ index 0000000..541af84
> + return NULL;
> + }
> +
> -+ switch (type = efi_mem_type(offset))
> ++ switch (type = efi_mem_type(offset))
> + {
> + case EFI_LOADER_CODE:
> + case EFI_LOADER_DATA:
> @@ -79,7 +112,7 @@ index 0000000..541af84
> +
> + default:
> + printk(KERN_INFO
> -+ "crash memory driver: invalid memory type for %lx: %d\n",
> ++ "crash memory driver: invalid memory type for %lx: %d\n",
> + offset, type);
> + return NULL;
> + }
> @@ -96,7 +129,7 @@ index 0000000..541af84
> +
> + if (!page->virtual) {
> + printk(KERN_INFO
> -+ "crash memory driver: offset: %lx page: %lx page->virtual: NULL\n",
> ++ "crash memory driver: offset: %lx page: %lx page->virtual: NULL\n",
> + offset, (unsigned long)page);
> + return NULL;
> + }
> @@ -104,8 +137,8 @@ index 0000000..541af84
> + return (page->virtual + (offset & (PAGE_SIZE-1)));
> +}
> +
> -+static inline void unmap_virtual(struct page *page)
> -+{
> ++static inline void unmap_virtual(struct page *page)
> ++{
> + return;
> +}
> +
> @@ -113,7 +146,7 @@ index 0000000..541af84
> +
> +#endif /* _ASM_IA64_CRASH_H */
> diff --git a/arch/ia64/kernel/ia64_ksyms.c b/arch/ia64/kernel/ia64_ksyms.c
> -index 7f4a0ed..552fe24 100644
> +index 5b7791d..aee4b87 100644
> --- a/arch/ia64/kernel/ia64_ksyms.c
> +++ b/arch/ia64/kernel/ia64_ksyms.c
> @@ -84,6 +84,9 @@ EXPORT_SYMBOL(ia64_save_scratch_fpregs);
> @@ -126,50 +159,47 @@ index 7f4a0ed..552fe24 100644
> #if defined(CONFIG_IA64_ESI) || defined(CONFIG_IA64_ESI_MODULE)
> extern void esi_call_phys (void);
> EXPORT_SYMBOL_GPL(esi_call_phys);
We could probably drop ia64 from this patch entirely, couldn't we?
Nobody that I'm aware of supports Fedora on ia64.
> -diff --git a/arch/x86/include/asm/crash.h b/arch/x86/include/asm/crash.h
> +diff --git a/arch/powerpc/include/asm/crash.h b/arch/powerpc/include/asm/crash.h
> new file mode 100644
> -index 0000000..dfcc006
> +index 0000000..daa8c4d
> --- /dev/null
> -+++ b/arch/x86/include/asm/crash.h
> -@@ -0,0 +1,73 @@
> -+#ifndef _ASM_I386_CRASH_H
> -+#define _ASM_I386_CRASH_H
> ++++ b/arch/powerpc/include/asm/crash.h
> +@@ -0,0 +1,6 @@
> ++#ifndef _PPC64_CRASH_H
> ++#define _PPC64_CRASH_H
> +
> -+/*
> -+ * linux/include/asm-i386/crash.h
> -+ *
> -+ * Copyright (c) 2004 Red Hat, Inc. All rights reserved.
> -+ *
> -+ * This program is free software; you can redistribute it and/or modify
> -+ * it under the terms of the GNU General Public License as published by
> -+ * the Free Software Foundation; either version 2, or (at your option)
> -+ * any later version.
> -+ *
> -+ * This program is distributed in the hope that it will be useful,
> -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
> -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> -+ * GNU General Public License for more details.
> -+ *
> -+ * You should have received a copy of the GNU General Public License
> -+ * along with this program; if not, write to the Free Software
> -+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
> -+ *
> -+ */
> ++#include <asm-generic/crash.h>
> ++
> ++#endif /* _PPC64_CRASH_H */
> +diff --git a/arch/s390/include/asm/crash.h b/arch/s390/include/asm/crash.h
> +new file mode 100644
> +index 0000000..552be5e
> +--- /dev/null
> ++++ b/arch/s390/include/asm/crash.h
> +@@ -0,0 +1,60 @@
> ++#ifndef _S390_CRASH_H
> ++#define _S390_CRASH_H
> +
> +#ifdef __KERNEL__
> +
> +#include <linux/mm.h>
> +#include <linux/highmem.h>
> -+#include <asm/mmzone.h>
> +
> -+static inline void *
> -+map_virtual(u64 offset, struct page **pp)
> ++/*
> ++ * For swapped prefix pages get bounce buffer using xlate_dev_mem_ptr()
> ++ */
> ++static inline void *map_virtual(u64 offset, struct page **pp)
> +{
> + struct page *page;
> + unsigned long pfn;
> + void *vaddr;
> +
> -+ pfn = (unsigned long)(offset >> PAGE_SHIFT);
> ++ vaddr = xlate_dev_mem_ptr(offset);
> ++ pfn = ((unsigned long) vaddr) >> PAGE_SHIFT;
> ++ if ((unsigned long) vaddr != offset)
> ++ page = pfn_to_page(pfn);
> ++ else
> ++ page = NULL;
> +
> + if (!page_is_ram(pfn)) {
> + printk(KERN_INFO
> @@ -183,30 +213,44 @@ index 0000000..dfcc006
> + return NULL;
> + }
> +
> -+ page = pfn_to_page(pfn);
> -+
> -+ vaddr = kmap(page);
> -+ if (!vaddr) {
> -+ printk(KERN_INFO
> -+ "crash memory driver: pfn: %lx kmap(page: %lx) failed\n",
> -+ pfn, (unsigned long)page);
> -+ return NULL;
> -+ }
> -+
> + *pp = page;
> -+ return (vaddr + (offset & (PAGE_SIZE-1)));
> ++ return vaddr;
> +}
> +
> -+static inline void unmap_virtual(struct page *page)
> -+{
> -+ kunmap(page);
> ++/*
> ++ * Free bounce buffer if necessary
> ++ */
> ++static inline void unmap_virtual(struct page *page)
> ++{
> ++ void *vaddr;
> ++
> ++ if (page) {
> ++ /*
> ++ * Because for bounce buffers vaddr will never be 0
> ++ * unxlate_dev_mem_ptr() will always free the bounce buffer.
> ++ */
> ++ vaddr = (void *)(page_to_pfn(page) << PAGE_SHIFT);
> ++ unxlate_dev_mem_ptr(0, vaddr);
> ++ }
> +}
> +
> +#endif /* __KERNEL__ */
> +
> -+#endif /* _ASM_I386_CRASH_H */
> ++#endif /* _S390_CRASH_H */
Was this requested by the s390x guys?
josh
10 years, 5 months
Patch: Fix lpae on exynos5
by John Dulaney
This patch fixes lpae on exynos5 arm processors. LPAE is needed for
virt on arm processors.
--- arch/arm/mach-exynos/mach-exynos5-dt.c 2013-09-02 16:46:10.000000000 -0400
+++ arch/arm/mach-exynos/mach-exynos5-dt.c 2013-10-23 10:35:37.891255087 -0400
@@ -14,7 +14,7 @@
#include <linux/memblock.h>
#include <linux/io.h>
#include <linux/clocksource.h>
-
+#include <linux/dma-mapping.h>
#include <asm/mach/arch.h>
#include <mach/regs-pmu.h>
@@ -23,6 +23,26 @@
#include "common.h"
+static u64 dma_mask64 = DMA_BIT_MASK(64);
+
+static int exynos5250_platform_notifier(struct notifier_block *nb,
+ unsigned long event, void *__dev)
+{
+ struct device *dev = __dev;
+
+ if (event != BUS_NOTIFY_ADD_DEVICE)
+ return NOTIFY_DONE;
+
+ dev->dma_mask = &dma_mask64;
+ dev->coherent_dma_mask = DMA_BIT_MASK(64);
+
+ return NOTIFY_OK;
+}
+
+static struct notifier_block exynos5250_platform_nb = {
+ .notifier_call = exynos5250_platform_notifier,
+};
+
static void __init exynos5_dt_machine_init(void)
{
struct device_node *i2c_np;
@@ -46,6 +66,9 @@
}
}
}
+
+ if (of_machine_is_compatible("samsung,exynos5250"))
+ bus_register_notifier(&platform_bus_type, &exynos5250_platform_nb);
of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
}
10 years, 5 months