~dannf/ubuntu/+source/linux/+git/unstable:pearl-4.10.0-2.2.4

Last commit made on 2017-01-19
Get this branch:
git clone -b pearl-4.10.0-2.2.4 https://git.launchpad.net/~dannf/ubuntu/+source/linux/+git/unstable
Only dann frazier can upload to this branch. If you are dann frazier please log in for upload directions.

Branch merges

Branch information

Name:
pearl-4.10.0-2.2.4
Repository:
lp:~dannf/ubuntu/+source/linux/+git/unstable

Recent commits

42a0f69... by dann frazier

UBUNTU: Ubuntu-4.10.0-2.4.4+pearl.1

Signed-off-by: dann frazier <email address hidden>

9656239... by dann frazier

UBUNTU: SAUCE: Export inb/outb symbols

Fixes FTBFS for modules that use these symbols.

Signed-off-by: dann frazier <email address hidden>

6c02d81... by "zhichang.yuan" <email address hidden>

ARM64 LPC: LPC driver implementation on Hip06

On hip06, the accesses to LPC peripherals work in an indirect way. A
corresponding LPC driver configure some registers in LPC master at first, then
the real accesses on LPC slave devices are finished by the LPC master, which
is transparent to LPC driver.
This patch implement the relevant driver for Hip06 LPC. Cooperating with
indirect-IO, ipmi messages is in service without any changes on ipmi driver.

Signed-off-by: zhichang.yuan <email address hidden>
Signed-off-by: Gabriele Paoloni <email address hidden>
[v5 submittal]

4cfc843... by dann frazier

UBUNTU: [Config] CONFIG_HISILICON_LPC=y

Signed-off-by: dann frazier <email address hidden>

4484ada... by "zhichang.yuan" <email address hidden>

ARM64 LPC: Add missing range exception for special ISA

This patch solves two issues:
1) parse and get the right I/O range from DTS node whose parent does not
define the corresponding ranges property;

There are some special ISA/LPC devices that work on a specific I/O range where
it is not correct to specify a ranges property in DTS parent node as cpu
addresses translated from DTS node are only for memory space on some
architectures, such as Arm64. Without the parent 'ranges' property, current
of_translate_address() return an error.
Here we add a fixup function, of_get_isa_indirect_io(). During the OF address
translation, this fixup will be called to check the 'reg' address to be
translating is for those sepcial ISA/LPC devices and get the I/O range
directly from the 'reg' property.

2) eliminate the I/O range conflict risk with PCI/PCIE leagecy I/O device;

The current __of_address_to_resource() always translates the I/O range to PIO.
But this processing is not suitable for our ISA/LPC devices whose I/O range is
not cpu address(Arnd had stressed this in his comments on V2,V3 patch-set).
Here, we bypass the mapping between cpu address and PIO for the special
ISA/LPC devices. But to drive these ISA/LPC devices, a I/O port address below
PCIBIOS_MIN_IO is needed by in*/out*(). Which means there is conflict risk
between I/O range of [0, PCIBIOS_MIN_IO) and PCI/PCIE legacy I/O range of [0,
IO_SPACE_LIMIT).
To avoid the I/O conflict, this patch reserve the I/O range below
PCIBIOS_MIN_IO.

Signed-off-by: zhichang.yuan <email address hidden>
Signed-off-by: Gabriele Paoloni <email address hidden>
[v5 submittal]

5a66715... by "zhichang.yuan" <email address hidden>

ARM64 LPC: Indirect ISA port IO introduced

For arm64, there is no I/O space as other architectural platforms, such as
X86. Most I/O accesses are achieved based on MMIO. But for some arm64 SoCs,
such as Hip06, when accessing some legacy ISA devices connected to LPC, those
known port addresses are used to control the corresponding target devices, for
example, 0x2f8 is for UART, 0xe4 is for ipmi-bt. It is different from the
normal MMIO mode in using.

To drive these devices, this patch introduces a method named indirect-IO.
In this method the in/out pair in arch/arm64/include/asm/io.h will be
redefined. When upper layer drivers call in/out with those known legacy port
addresses to access the peripherals, the hooking functions corrresponding to
those target peripherals will be called. Through this way, those upper layer
drivers which depend on in/out can run on Hip06 without any changes.

Cc: Catalin Marinas <email address hidden>
Cc: Will Deacon <email address hidden>
Signed-off-by: zhichang.yuan <email address hidden>
Signed-off-by: Gabriele Paoloni <email address hidden>
[v5 submittal]

a08ee02... by dann frazier

UBUNTU: [Config] CONFIG_ARM64_INDIRECT_PIO=y

Signed-off-by: dann frazier <email address hidden>

fb5e244... by Ding Tianhong <email address hidden>

arm64: arch timer: Add timer erratum property for Hip05-d02 and Hip06-d03

Enable workaround for hisilicon erratum 161601 on Hip05-d02 and Hip06-d03 board.

Signed-off-by: Ding Tianhong <email address hidden>
[v7 submittal]

9a39f95... by Ding Tianhong <email address hidden>

arm64: arch_timer: Work around Erratum Hisilicon-161601

Erratum Hisilicon-161601 says that the ARM generic timer counter "has the
potential to contain an erroneous value when the timer value changes".
Accesses to TVAL (both read and write) are also affected due to the implicit counter
read. Accesses to CVAL are not affected.

The workaround is to reread the system count registers until the value of the second
read is larger than the first one by less than 32, the system counter can be guaranteed
not to return wrong value twice by back-to-back read and the error value is always larger
than the correct one by 32. Writes to TVAL are replaced with an equivalent write to CVAL.

The workaround is enabled if the hisilicon,erratum-161601 property is found in
the timer node in the device tree. This can be overridden with the
clocksource.arm_arch_timer.hisilicon-161601 boot parameter, which allows KVM
users to enable the workaround until a mechanism is implemented to
automatically communicate this information.

Fix some description for fsl erratum a008585.

Signed-off-by: Ding Tianhong <email address hidden>
[v7 submittal]

f0a3668... by dann frazier

UBUNTU: [Config] CONFIG_HISILICON_ERRATUM_161601=y

Signed-off-by: dann frazier <email address hidden>