Skip to content

Commit

Permalink
Linux 3.10.79
Browse files Browse the repository at this point in the history
Signed-off-by: Javier Sayago <admin@lonasdigital.com>
  • Loading branch information
javilonas committed May 21, 2015
1 parent 8df58fc commit 15f7c33
Show file tree
Hide file tree
Showing 26 changed files with 114 additions and 195 deletions.
2 changes: 1 addition & 1 deletion Documentation/devicetree/bindings/dma/fsl-mxs-dma.txt
Expand Up @@ -38,7 +38,7 @@ dma_apbx: dma-apbx@80024000 {
80 81 68 69
70 71 72 73
74 75 76 77>;
interrupt-names = "auart4-rx", "aurat4-tx", "spdif-tx", "empty",
interrupt-names = "auart4-rx", "auart4-tx", "spdif-tx", "empty",
"saif0", "saif1", "i2c0", "i2c1",
"auart0-rx", "auart0-tx", "auart1-rx", "auart1-tx",
"auart2-rx", "auart2-tx", "auart3-rx", "auart3-tx";
Expand Down
2 changes: 1 addition & 1 deletion Makefile
@@ -1,6 +1,6 @@
VERSION = 3
PATCHLEVEL = 10
SUBLEVEL = 78
SUBLEVEL = 79
EXTRAVERSION =
NAME = TOSSUG Baby Fish

Expand Down
4 changes: 4 additions & 0 deletions arch/arm/boot/dts/armada-xp-openblocks-ax3-4.dts
Expand Up @@ -32,6 +32,10 @@
0xf0000000 0 0xf0000000 0x8000000 /* Device Bus, NOR 128MiB */>;

internal-regs {
rtc@10300 {
/* No crystal connected to the internal RTC */
status = "disabled";
};
serial@12000 {
clock-frequency = <250000000>;
status = "okay";
Expand Down
1 change: 1 addition & 0 deletions arch/arm/boot/dts/imx23-olinuxino.dts
Expand Up @@ -89,6 +89,7 @@

ahb@80080000 {
usb0: usb@80080000 {
dr_mode = "host";
vbus-supply = <&reg_usb0_vbus>;
status = "okay";
};
Expand Down
1 change: 1 addition & 0 deletions arch/arm/boot/dts/imx25.dtsi
Expand Up @@ -393,6 +393,7 @@

pwm4: pwm@53fc8000 {
compatible = "fsl,imx25-pwm", "fsl,imx27-pwm";
#pwm-cells = <2>;
reg = <0x53fc8000 0x4000>;
clocks = <&clks 108>, <&clks 52>;
clock-names = "ipg", "per";
Expand Down
2 changes: 1 addition & 1 deletion arch/arm/boot/dts/imx28.dtsi
Expand Up @@ -691,7 +691,7 @@
80 81 68 69
70 71 72 73
74 75 76 77>;
interrupt-names = "auart4-rx", "aurat4-tx", "spdif-tx", "empty",
interrupt-names = "auart4-rx", "auart4-tx", "spdif-tx", "empty",
"saif0", "saif1", "i2c0", "i2c1",
"auart0-rx", "auart0-tx", "auart1-rx", "auart1-tx",
"auart2-rx", "auart2-tx", "auart3-rx", "auart3-tx";
Expand Down
3 changes: 1 addition & 2 deletions drivers/acpi/acpica/dsopcode.c
Expand Up @@ -539,8 +539,7 @@ acpi_ds_eval_table_region_operands(struct acpi_walk_state *walk_state,
return_ACPI_STATUS(AE_NOT_EXIST);
}

obj_desc->region.address =
(acpi_physical_address) ACPI_TO_INTEGER(table);
obj_desc->region.address = ACPI_PTR_TO_PHYSADDR(table);
obj_desc->region.length = table->length;

ACPI_DEBUG_PRINT((ACPI_DB_EXEC, "RgnObj %p Addr %8.8X%8.8X Len %X\n",
Expand Down
5 changes: 2 additions & 3 deletions drivers/acpi/acpica/tbinstal.c
Expand Up @@ -301,8 +301,7 @@ struct acpi_table_header *acpi_tb_table_override(struct acpi_table_header
ACPI_EXCEPTION((AE_INFO, AE_NO_MEMORY,
"%4.4s %p Attempted physical table override failed",
table_header->signature,
ACPI_CAST_PTR(void,
table_desc->address)));
ACPI_PHYSADDR_TO_PTR(table_desc->address)));
return (NULL);
}

Expand All @@ -318,7 +317,7 @@ struct acpi_table_header *acpi_tb_table_override(struct acpi_table_header
ACPI_INFO((AE_INFO,
"%4.4s %p %s table override, new table: %p",
table_header->signature,
ACPI_CAST_PTR(void, table_desc->address),
ACPI_PHYSADDR_TO_PTR(table_desc->address),
override_type, new_table));

/* We can now unmap/delete the original table (if fully mapped) */
Expand Down
7 changes: 4 additions & 3 deletions drivers/acpi/acpica/tbxfroot.c
Expand Up @@ -118,7 +118,7 @@ static acpi_status acpi_tb_validate_rsdp(struct acpi_table_rsdp *rsdp)
*
******************************************************************************/

acpi_status acpi_find_root_pointer(acpi_size *table_address)
acpi_status acpi_find_root_pointer(acpi_physical_address * table_address)
{
u8 *table_ptr;
u8 *mem_rover;
Expand Down Expand Up @@ -176,7 +176,8 @@ acpi_status acpi_find_root_pointer(acpi_size *table_address)
physical_address +=
(u32) ACPI_PTR_DIFF(mem_rover, table_ptr);

*table_address = physical_address;
*table_address =
(acpi_physical_address) physical_address;
return_ACPI_STATUS(AE_OK);
}
}
Expand Down Expand Up @@ -209,7 +210,7 @@ acpi_status acpi_find_root_pointer(acpi_size *table_address)
(ACPI_HI_RSDP_WINDOW_BASE +
ACPI_PTR_DIFF(mem_rover, table_ptr));

*table_address = physical_address;
*table_address = (acpi_physical_address) physical_address;
return_ACPI_STATUS(AE_OK);
}

Expand Down
24 changes: 21 additions & 3 deletions drivers/gpio/gpiolib.c
Expand Up @@ -755,6 +755,7 @@ static struct class gpio_class = {
*/
static int gpiod_export(struct gpio_desc *desc, bool direction_may_change)
{
struct gpio_chip *chip;
unsigned long flags;
int status;
const char *ioname = NULL;
Expand All @@ -772,8 +773,16 @@ static int gpiod_export(struct gpio_desc *desc, bool direction_may_change)
return -EINVAL;
}

chip = desc->chip;

mutex_lock(&sysfs_lock);

/* check if chip is being removed */
if (!chip || !chip->exported) {
status = -ENODEV;
goto fail_unlock;
}

spin_lock_irqsave(&gpio_lock, flags);
if (!test_bit(FLAG_REQUESTED, &desc->flags) ||
test_bit(FLAG_EXPORT, &desc->flags)) {
Expand Down Expand Up @@ -1043,13 +1052,16 @@ static void gpiochip_unexport(struct gpio_chip *chip)
{
int status;
struct device *dev;
struct gpio_desc *desc;
unsigned int i;

mutex_lock(&sysfs_lock);
dev = class_find_device(&gpio_class, NULL, chip, match_export);
if (dev) {
sysfs_remove_group(&dev->kobj, &gpiochip_attr_group);
put_device(dev);
device_unregister(dev);
/* prevent further gpiod exports */
chip->exported = 0;
status = 0;
} else
Expand All @@ -1059,6 +1071,13 @@ static void gpiochip_unexport(struct gpio_chip *chip)
if (status)
pr_debug("%s: chip %s status %d\n", __func__,
chip->label, status);

/* unregister gpiod class devices owned by sysfs */
for (i = 0; i < chip->ngpio; i++) {
desc = &chip->desc[i];
if (test_and_clear_bit(FLAG_SYSFS, &desc->flags))
gpiod_free(desc);
}
}

static int __init gpiolib_sysfs_init(void)
Expand Down Expand Up @@ -1268,6 +1287,8 @@ int gpiochip_remove(struct gpio_chip *chip)
int status = 0;
unsigned id;

gpiochip_unexport(chip);

spin_lock_irqsave(&gpio_lock, flags);

gpiochip_remove_pin_ranges(chip);
Expand All @@ -1288,9 +1309,6 @@ int gpiochip_remove(struct gpio_chip *chip)

spin_unlock_irqrestore(&gpio_lock, flags);

if (status == 0)
gpiochip_unexport(chip);

return status;
}
EXPORT_SYMBOL_GPL(gpiochip_remove);
Expand Down
18 changes: 17 additions & 1 deletion drivers/gpu/drm/i915/intel_lvds.c
Expand Up @@ -1007,12 +1007,28 @@ static int intel_dual_link_lvds_callback(const struct dmi_system_id *id)
static const struct dmi_system_id intel_dual_link_lvds[] = {
{
.callback = intel_dual_link_lvds_callback,
.ident = "Apple MacBook Pro (Core i5/i7 Series)",
.ident = "Apple MacBook Pro 15\" (2010)",
.matches = {
DMI_MATCH(DMI_SYS_VENDOR, "Apple Inc."),
DMI_MATCH(DMI_PRODUCT_NAME, "MacBookPro6,2"),
},
},
{
.callback = intel_dual_link_lvds_callback,
.ident = "Apple MacBook Pro 15\" (2011)",
.matches = {
DMI_MATCH(DMI_SYS_VENDOR, "Apple Inc."),
DMI_MATCH(DMI_PRODUCT_NAME, "MacBookPro8,2"),
},
},
{
.callback = intel_dual_link_lvds_callback,
.ident = "Apple MacBook Pro 15\" (2012)",
.matches = {
DMI_MATCH(DMI_SYS_VENDOR, "Apple Inc."),
DMI_MATCH(DMI_PRODUCT_NAME, "MacBookPro9,1"),
},
},
{ } /* terminating entry */
};

Expand Down
12 changes: 12 additions & 0 deletions drivers/mmc/card/block.c
Expand Up @@ -1429,6 +1429,18 @@ static inline void mmc_blk_reset_success(struct mmc_blk_data *md, int type)
md->reset_done &= ~type;
}

int mmc_access_rpmb(struct mmc_queue *mq)
{
struct mmc_blk_data *md = mq->data;
/*
* If this is a RPMB partition access, return ture
*/
if (md && md->part_type == EXT_CSD_PART_CONFIG_ACC_RPMB)
return true;

return false;
}

static int mmc_blk_issue_discard_rq(struct mmc_queue *mq, struct request *req)
{
struct mmc_blk_data *md = mq->data;
Expand Down
2 changes: 1 addition & 1 deletion drivers/mmc/card/queue.c
Expand Up @@ -44,7 +44,7 @@ static int mmc_prep_request(struct request_queue *q, struct request *req)
return BLKPREP_KILL;
}

if (mq && mmc_card_removed(mq->card))
if (mq && (mmc_card_removed(mq->card) || mmc_access_rpmb(mq)))
return BLKPREP_KILL;

req->cmd_flags |= REQ_DONTPREP;
Expand Down
2 changes: 2 additions & 0 deletions drivers/mmc/card/queue.h
Expand Up @@ -82,4 +82,6 @@ extern void mmc_packed_clean(struct mmc_queue *);

extern void print_mmc_packing_stats(struct mmc_card *card);

extern int mmc_access_rpmb(struct mmc_queue *);

#endif
10 changes: 4 additions & 6 deletions drivers/pinctrl/core.c
Expand Up @@ -1077,7 +1077,7 @@ void devm_pinctrl_put(struct pinctrl *p)
EXPORT_SYMBOL_GPL(devm_pinctrl_put);

int pinctrl_register_map(struct pinctrl_map const *maps, unsigned num_maps,
bool dup, bool locked)
bool dup)
{
int i, ret;
struct pinctrl_maps *maps_node;
Expand Down Expand Up @@ -1145,11 +1145,9 @@ int pinctrl_register_map(struct pinctrl_map const *maps, unsigned num_maps,
maps_node->maps = maps;
}

if (!locked)
mutex_lock(&pinctrl_maps_mutex);
mutex_lock(&pinctrl_maps_mutex);
list_add_tail(&maps_node->node, &pinctrl_maps);
if (!locked)
mutex_unlock(&pinctrl_maps_mutex);
mutex_unlock(&pinctrl_maps_mutex);

return 0;
}
Expand All @@ -1164,7 +1162,7 @@ int pinctrl_register_map(struct pinctrl_map const *maps, unsigned num_maps,
int pinctrl_register_mappings(struct pinctrl_map const *maps,
unsigned num_maps)
{
return pinctrl_register_map(maps, num_maps, true, false);
return pinctrl_register_map(maps, num_maps, true);
}

void pinctrl_unregister_map(struct pinctrl_map const *map)
Expand Down
2 changes: 1 addition & 1 deletion drivers/pinctrl/core.h
Expand Up @@ -183,7 +183,7 @@ static inline struct pin_desc *pin_desc_get(struct pinctrl_dev *pctldev,
}

int pinctrl_register_map(struct pinctrl_map const *maps, unsigned num_maps,
bool dup, bool locked);
bool dup);
void pinctrl_unregister_map(struct pinctrl_map const *map);

extern int pinctrl_force_sleep(struct pinctrl_dev *pctldev);
Expand Down
2 changes: 1 addition & 1 deletion drivers/pinctrl/devicetree.c
Expand Up @@ -92,7 +92,7 @@ static int dt_remember_or_free_map(struct pinctrl *p, const char *statename,
dt_map->num_maps = num_maps;
list_add_tail(&dt_map->node, &p->dt_maps);

return pinctrl_register_map(map, num_maps, false, true);
return pinctrl_register_map(map, num_maps, false);
}

struct pinctrl_dev *of_pinctrl_get(struct device_node *np)
Expand Down
18 changes: 17 additions & 1 deletion drivers/tty/hvc/hvc_xen.c
Expand Up @@ -299,11 +299,27 @@ static int xen_initial_domain_console_init(void)
return 0;
}

static void xen_console_update_evtchn(struct xencons_info *info)
{
if (xen_hvm_domain()) {
uint64_t v;
int err;

err = hvm_get_parameter(HVM_PARAM_CONSOLE_EVTCHN, &v);
if (!err && v)
info->evtchn = v;
} else
info->evtchn = xen_start_info->console.domU.evtchn;
}

void xen_console_resume(void)
{
struct xencons_info *info = vtermno_to_xencons(HVC_COOKIE);
if (info != NULL && info->irq)
if (info != NULL && info->irq) {
if (!xen_initial_domain())
xen_console_update_evtchn(info);
rebind_evtchn_irq(info->evtchn, info->irq);
}
}

static void xencons_disconnect_backend(struct xencons_info *info)
Expand Down
2 changes: 1 addition & 1 deletion fs/nilfs2/btree.c
Expand Up @@ -388,7 +388,7 @@ static int nilfs_btree_root_broken(const struct nilfs_btree_node *node,
nchildren = nilfs_btree_node_get_nchildren(node);

if (unlikely(level < NILFS_BTREE_LEVEL_NODE_MIN ||
level > NILFS_BTREE_LEVEL_MAX ||
level >= NILFS_BTREE_LEVEL_MAX ||
nchildren < 0 ||
nchildren > NILFS_BTREE_ROOT_NCHILDREN_MAX)) {
pr_crit("NILFS: bad btree root (inode number=%lu): level = %d, flags = 0x%x, nchildren = %d\n",
Expand Down
13 changes: 13 additions & 0 deletions fs/ocfs2/dlm/dlmmaster.c
Expand Up @@ -729,6 +729,19 @@ struct dlm_lock_resource * dlm_get_lock_resource(struct dlm_ctxt *dlm,
if (tmpres) {
spin_unlock(&dlm->spinlock);
spin_lock(&tmpres->spinlock);

/*
* Right after dlm spinlock was released, dlm_thread could have
* purged the lockres. Check if lockres got unhashed. If so
* start over.
*/
if (hlist_unhashed(&tmpres->hash_node)) {
spin_unlock(&tmpres->spinlock);
dlm_lockres_put(tmpres);
tmpres = NULL;
goto lookup;
}

/* Wait on the thread that is mastering the resource */
if (tmpres->owner == DLM_LOCK_RES_OWNER_UNKNOWN) {
__dlm_wait_on_lockres(tmpres);
Expand Down
2 changes: 1 addition & 1 deletion include/acpi/acpixf.h
Expand Up @@ -177,7 +177,7 @@ acpi_status acpi_load_tables(void);
*/
acpi_status acpi_reallocate_root_table(void);

acpi_status acpi_find_root_pointer(acpi_size *rsdp_address);
acpi_status acpi_find_root_pointer(acpi_physical_address *rsdp_address);

acpi_status acpi_unload_table_id(acpi_owner_id id);

Expand Down

0 comments on commit 15f7c33

Please sign in to comment.