/* * Copyright (C) 2012 ARM Ltd. * Author: Marc Zyngier * * Adapted for ARM and earlycon: * Copyright (C) 2014 Linaro Ltd. * Author: Rob Herring * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. * * 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, see . */ #include #include #include #include #ifdef CONFIG_THUMB2_KERNEL #define SEMIHOST_SWI "0xab" #else #define SEMIHOST_SWI "0x123456" #endif /* * Semihosting-based debug console */ static void smh_putc(struct uart_port *port, int c) { #ifdef CONFIG_ARM64 asm volatile("mov x1, %0\n" "mov x0, #3\n" "hlt 0xf000\n" : : "r" (&c) : "x0", "x1", "memory"); #else asm volatile("mov r1, %0\n" "mov r0, #3\n" "svc " SEMIHOST_SWI "\n" : : "r" (&c) : "r0", "r1", "memory"); #endif } static void smh_write(struct console *con, const char *s, unsigned n) { struct earlycon_device *dev = con->data; uart_console_write(&dev->port, s, n, smh_putc); } static int __init early_smh_setup(struct earlycon_device *device, const char *opt) { device->con->write = smh_write; return 0; } EARLYCON_DECLARE(smh, early_smh_setup); 46652318e16'>treecommitdiff
diff options
context:
space:
mode:
authorMiklos Szeredi <mszeredi@redhat.com>2016-12-16 11:02:55 +0100
committerMiklos Szeredi <mszeredi@redhat.com>2016-12-16 11:02:55 +0100
commit2aff4534b6c48c465c2ba3bca310646652318e16 (patch)
treec804f35f78e281b322375f0873558b4daca2b741
parentc412ce498396097cb96b3e24e062752312a962c9 (diff)
ovl: check lower existence when removing
Currently ovl_lookup() checks existence of lower file even if there's a non-directory on upper (which is always opaque). This is done so that remove can decide whether a whiteout is needed or not. It would be better to defer this check to unlink, since most of the time the gathered information about opaqueness will be unused. This adds a helper ovl_lower_positive() that checks if there's anything on the lower layer(s). The following patches also introduce changes to how the "opaque" attribute is updated on directories: this attribute is added when the directory is creted or moved over a whiteout or object covering something on the lower layer. However following changes will allow the attribute to remain on the directory after being moved, even if the new location doesn't cover anything. Because of this, we need to check lower layers even for opaque directories, so that whiteout is only created when necessary. This function will later be also used to decide about marking a directory opaque, so deal with negative dentries as well. When dealing with negative, it's enough to check for being a whiteout If the dentry is positive but not upper then it also obviously needs whiteout/opaque. Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>