[PATCH 1/1] riscv: enable Docker requirements in defconfig

Palmer Dabbelt palmer at dabbelt.com
Fri Jul 22 15:29:15 PDT 2022


On Fri, 22 Jul 2022 01:03:47 PDT (-0700), heinrich.schuchardt at canonical.com wrote:
> On 7/22/22 07:06, Palmer Dabbelt wrote:
>> On Tue, 07 Jun 2022 17:02:51 PDT (-0700),
>> heinrich.schuchardt at canonical.com wrote:
>>> The defconfig kernel should be able to run Docker.
>>>
>>> Enable the missing settings according to [1].
>>> make savedefconfig eliminates CONFIG_STACKTRACE
>>> which is enabled by default.
>>>
>>> Many of the settings are also needed to run a defconfig kernel
>>> on default distro installations or to run snaps.
>>>
>>> [1] https://github.com/moby/moby/blob/master/contrib/check-config.sh
>>>
>>> Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt at canonical.com>
>>> ---
>>> Cf. [PATCH] arm64: Enable docker support in defconfig
>>> https://lore.kernel.org/lkml/20220606140103.32779-1-vincenzo.frascino@arm.com/
>>> ---
>>>  arch/riscv/configs/defconfig | 65 +++++++++++++++++++++++++++++++++++-
>>>  1 file changed, 64 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/arch/riscv/configs/defconfig b/arch/riscv/configs/defconfig
>>> index 0cc17db8aaba..d4fffcd3cc05 100644
>>> --- a/arch/riscv/configs/defconfig
>>> +++ b/arch/riscv/configs/defconfig
>>> @@ -6,8 +6,18 @@ CONFIG_BPF_SYSCALL=y
>>>  CONFIG_IKCONFIG=y
>>>  CONFIG_IKCONFIG_PROC=y
>>>  CONFIG_CGROUPS=y
>>> +CONFIG_MEMCG=y
>>> +CONFIG_BLK_CGROUP=y
>>>  CONFIG_CGROUP_SCHED=y
>>>  CONFIG_CFS_BANDWIDTH=y
>>> +CONFIG_RT_GROUP_SCHED=y
>>> +CONFIG_CGROUP_PIDS=y
>>> +CONFIG_CGROUP_FREEZER=y
>>> +CONFIG_CGROUP_HUGETLB=y
>>> +CONFIG_CPUSETS=y
>>> +CONFIG_CGROUP_DEVICE=y
>>> +CONFIG_CGROUP_CPUACCT=y
>>> +CONFIG_CGROUP_PERF=y
>>>  CONFIG_CGROUP_BPF=y
>>>  CONFIG_NAMESPACES=y
>>>  CONFIG_USER_NS=y
>>> @@ -28,9 +38,11 @@ CONFIG_KVM=m
>>>  CONFIG_JUMP_LABEL=y
>>>  CONFIG_MODULES=y
>>>  CONFIG_MODULE_UNLOAD=y
>>> +CONFIG_BLK_DEV_THROTTLING=y
>>>  CONFIG_NET=y
>>>  CONFIG_PACKET=y
>>>  CONFIG_UNIX=y
>>> +CONFIG_XFRM_USER=m
>>>  CONFIG_INET=y
>>>  CONFIG_IP_MULTICAST=y
>>>  CONFIG_IP_ADVANCED_ROUTER=y
>>> @@ -38,7 +50,43 @@ CONFIG_IP_PNP=y
>>>  CONFIG_IP_PNP_DHCP=y
>>>  CONFIG_IP_PNP_BOOTP=y
>>>  CONFIG_IP_PNP_RARP=y
>>> +CONFIG_INET_ESP=m
>>> +CONFIG_NETFILTER=y
>>> +CONFIG_BRIDGE_NETFILTER=m
>>> +CONFIG_NF_CONNTRACK=m
>>> +CONFIG_NF_CONNTRACK_FTP=m
>>> +CONFIG_NF_CONNTRACK_TFTP=m
>>> +CONFIG_NETFILTER_XT_MARK=m
>>> +CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m
>>> +CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
>>> +CONFIG_NETFILTER_XT_MATCH_IPVS=m
>>> +CONFIG_IP_VS=m
>>> +CONFIG_IP_VS_PROTO_TCP=y
>>> +CONFIG_IP_VS_PROTO_UDP=y
>>> +CONFIG_IP_VS_RR=m
>>> +CONFIG_IP_VS_NFCT=y
>>> +CONFIG_NF_LOG_ARP=m
>>> +CONFIG_NF_LOG_IPV4=m
>>> +CONFIG_IP_NF_IPTABLES=m
>>> +CONFIG_IP_NF_FILTER=m
>>> +CONFIG_IP_NF_TARGET_REJECT=m
>>> +CONFIG_IP_NF_NAT=m
>>> +CONFIG_IP_NF_TARGET_MASQUERADE=m
>>> +CONFIG_IP_NF_TARGET_REDIRECT=m
>>> +CONFIG_IP_NF_MANGLE=m
>>> +CONFIG_NF_LOG_IPV6=m
>>> +CONFIG_IP6_NF_IPTABLES=m
>>> +CONFIG_IP6_NF_MATCH_IPV6HEADER=m
>>> +CONFIG_IP6_NF_FILTER=m
>>> +CONFIG_IP6_NF_TARGET_REJECT=m
>>> +CONFIG_IP6_NF_MANGLE=m
>>> +CONFIG_BRIDGE=m
>>> +CONFIG_BRIDGE_VLAN_FILTERING=y
>>> +CONFIG_VLAN_8021Q=m
>>> +CONFIG_NET_SCHED=y
>>> +CONFIG_NET_CLS_CGROUP=m
>>>  CONFIG_NETLINK_DIAG=y
>>> +CONFIG_CGROUP_NET_PRIO=y
>>>  CONFIG_NET_9P=y
>>>  CONFIG_NET_9P_VIRTIO=y
>>>  CONFIG_PCI=y
>>> @@ -57,7 +105,15 @@ CONFIG_SCSI_VIRTIO=y
>>>  CONFIG_ATA=y
>>>  CONFIG_SATA_AHCI=y
>>>  CONFIG_SATA_AHCI_PLATFORM=y
>>> +CONFIG_MD=y
>>> +CONFIG_BLK_DEV_DM=m
>>> +CONFIG_DM_THIN_PROVISIONING=m
>>>  CONFIG_NETDEVICES=y
>>> +CONFIG_DUMMY=m
>>> +CONFIG_MACVLAN=m
>>> +CONFIG_IPVLAN=m
>>> +CONFIG_VXLAN=m
>>> +CONFIG_VETH=m
>>>  CONFIG_VIRTIO_NET=y
>>>  CONFIG_MACB=y
>>>  CONFIG_E1000E=y
>>> @@ -105,7 +161,11 @@ CONFIG_RPMSG_CTRL=y
>>>  CONFIG_RPMSG_VIRTIO=y
>>>  CONFIG_EXT4_FS=y
>>>  CONFIG_EXT4_FS_POSIX_ACL=y
>>> +CONFIG_EXT4_FS_SECURITY=y
>>> +CONFIG_BTRFS_FS=m
>>> +CONFIG_BTRFS_FS_POSIX_ACL=y
>>>  CONFIG_AUTOFS4_FS=y
>>> +CONFIG_OVERLAY_FS=m
>>>  CONFIG_MSDOS_FS=y
>>>  CONFIG_VFAT_FS=y
>>>  CONFIG_TMPFS=y
>>> @@ -119,6 +179,10 @@ CONFIG_ROOT_NFS=y
>>>  CONFIG_9P_FS=y
>>>  CONFIG_NLS_CODEPAGE_437=y
>>>  CONFIG_NLS_ISO8859_1=m
>>> +CONFIG_SECURITY=y
>>> +CONFIG_SECURITY_SELINUX=y
>>> +CONFIG_SECURITY_APPARMOR=y
>>> +CONFIG_DEFAULT_SECURITY_DAC=y
>>>  CONFIG_CRYPTO_USER_API_HASH=y
>>>  CONFIG_CRYPTO_DEV_VIRTIO=y
>>>  CONFIG_PRINTK_TIME=y
>>> @@ -137,7 +201,6 @@ CONFIG_DEBUG_SPINLOCK=y
>>>  CONFIG_DEBUG_MUTEXES=y
>>>  CONFIG_DEBUG_RWSEMS=y
>>>  CONFIG_DEBUG_ATOMIC_SLEEP=y
>>> -CONFIG_STACKTRACE=y
>>>  CONFIG_DEBUG_LIST=y
>>>  CONFIG_DEBUG_PLIST=y
>>>  CONFIG_DEBUG_SG=y
>>
>> Sorry for being so slow here.  I don't have any issues with this as a
>> concept, but it makes a handful of my test configs panic on boot.  Seems
>> like something is tripping up a kasan failure.  I guess it's kind of
>
> Hello Palmer,
>
> thanks for sharing your test experience. Could you, please, provide the
> config file and the test configuration that leads the regression.

My test setup is at 
<http://github.com/palmer-dabbelt/riscv-systems-ci.git>.  I don't 
advertise it all that much because it's pretty flaky, but some folks 
have gotten it working recently.  `make 
check/qemu-rv64gc-virt-smp8/halt-kasan-glibc/stdout` hangs for me with 
your patch, that's running the "kasan" config from here 
<https://github.com/palmer-dabbelt/riscv-systems-ci/blob/master/configs/linux/kasan>, 
it just flips on CONFIG_KASAN so it shouldn't be all that hard to 
reproduce outside the setup (those configs are all additions to 
defconfig).

I don't have a trace lying around, but it triggers asan failures in a 
handful of block driver initialization routines (I remember seeing 
SD/MMC and USB storage).  I can dig them up if you can't reproduce it, 
but hopefully it's simple.

>> arbitrary to call that a regression, as I'm sure it's just uncovering
>> some issue that already exists, but turning something on in defconfig
>> that panics with kasan is going to have a bunch of fallout.
>>
>> It looks like BLK_CGROUP is the problem here, so if you're OK with it
>> then I'm happy to take the rest of these.  I put that over at
>> kernel.org/palmer/linux/riscv-docker_no_blk_cgroup, if that's OK I'll
>> cherry-pick it onto for-next.
>
> I am fine with cherry picking.

OK, it's on for-next.  Thanks!

>
> Best regards
>
> Heinrich
>
>>
>> There's almost certainly a bug here that warrants fixing.



More information about the linux-riscv mailing list