Merge changes from sid up to 3.14.7-1

Replace 'powerpc/powernv: Add calls to support little endian host'
with the version committed upstream.

Drop the ABI-preserving changes.

svn path=/dists/trunk/linux/; revision=21452
This commit is contained in:
Ben Hutchings 2014-06-16 12:24:52 +00:00
commit a50e53cccf
72 changed files with 944 additions and 114 deletions

238
debian/changelog vendored
View File

@ -60,6 +60,244 @@ linux (3.15~rc5-1~exp1) experimental; urgency=medium
-- maximilian attems <maks@debian.org> Fri, 16 May 2014 14:33:57 +0200
linux (3.14.7-1) unstable; urgency=medium
* New upstream stable update:
http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.14.6
- [mipsel] loongson2_cpufreq: Fix CPU clock rate setting
(regression in 3.14)
- rtmutex: Fix deadlock detector for real
- kernfs: add back missing error check in kernfs_fop_mmap()
(regression in 3.14)
- coredump: fix va_list corruption (regression in 3.11)
- mm: make fixup_user_fault() check the vma access rights too
- serial: 8250: Fix thread unsafe __dma_tx_complete function
- 8250_core: Fix unwanted TX chars write
- iwlwifi: 7000: bump API to 9
- timer: Prevent overflow in apply_slack
- cfg80211: free sme on connection failures (regression in 3.11)
- cfg80211: add cfg80211_sched_scan_stopped_rtnl (regression in 3.14)
- mac80211: fix nested rtnl locking on ieee80211_reconfig
(regression in 3.14)
- mm, thp: close race between mremap() and split_huge_page()
- [x86] mm, hugetlb: Add missing TLB page invalidation for hugetlb_cow()
- hwpoison, hugetlb: lock_page/unlock_page does not match for handling a
free hugepage
- iwlwifi: mvm: delay enabling smart FIFO until after beacon RX
(regression in 3.14)
- aio: fix potential leak in aio_run_iocb().
- Revert "hwmon: (coretemp) Refine TjMax detection"
- hrtimer: Prevent remote enqueue of leftmost timers
- hrtimer: Set expiry time before switch_hrtimer_base()
- dm verity: fix biovecs hash calculation regression (regression in 3.14)
- dm cache: fix writethrough mode quiescing in cache_map
(regression in 3.13)
- md/raid10: call wait_barrier() for each request submitted.
(regression in 3.14)
- PNP / ACPI: Do not return errors if _DIS or _SRS are not present
(regression in 3.14)
- ACPI / EC: Process rather than discard events in acpi_ec_clear
(regression in 3.13.7, 3.14)
- irqchip: armada-370-xp: fix invalid cast of signed value into unsigned
variable (regression in 3.13)
- irqchip: armada-370-xp: implement the ->check_device() msi_chip
operation (regression in 3.13)
- irqchip: armada-370-xp: Fix releasing of MSIs (regression in 3.13)
- [x86] drm/i915: Allow user modes to exceed DVI 165MHz limit
(regression in 3.14)
- [x86] drm/i915: Don't check gmch state on inherited configs
(regression in 3.13?)
- [x86] drm/i915: Don't WARN nor handle unexpected hpd interrupts on gmch
platforms (regression in 3.13)
- [x86] drm/radeon: fix runpm handling on APUs (v4) (regression in 3.13)
- drm/radeon: disable mclk dpm on R7 260X (regression in 3.14)
- drm/radeon: add support for newer mc ucode on SI (v2)
- drm/radeon: add support for newer mc ucode on CI (v2)
- drm/radeon: re-enable mclk dpm on R7 260X asics
- drm/radeon/uvd: use lower clocks on old UVD to boot v2
(regression in 3.13)
- drm/radeon: check buffer relocation offset
- USB: Nokia 305 should be treated as unusual dev
- USB: Nokia 5300 should be treated as unusual dev
- Revert "Bluetooth: Enable autosuspend for Intel Bluetooth device"
(regression in 3.14)
- posix_acl: handle NULL ACL in posix_acl_equiv_mode
- fs/affs/super.c: bugfix / double free (regression in 3.14)
- [armel/orion5x] fix target ID for crypto SRAM window
(regression in 3.12)
- [armel/kirkwood]: dts: fix mislocated pcie-controller nodes
(regression in 3.12)
- [armhf/armmp-lpae] 8012/1: kdump: Avoid overflow when converting pfn to
physaddr
- drm/nouveau: fix another lock unbalance in nouveau_crtc_page_flip
(regression in 3.11)
- drm/i915/vlv: reset VLV media force wake request register
(regression in 3.14?)
- i40e: potential array underflow in i40e_vc_process_vf_msg()
- igb: Fix Null-pointer dereference in igb_reset_q_vector
(regression in 3.14)
- igb: Unset IGB_FLAG_HAS_MSIX-flag when falling back to msi-only
(regression in 3.14)
- leds: leds-pwm: properly clean up after probe failure
- device_cgroup: rework device access check and exception checking
- device_cgroup: check if exception removal is allowed
- media: media-device: fix infoleak in ioctl media_enum_entities()
(CVE-2014-1739)
- Input: Add INPUT_PROP_TOPBUTTONPAD device property
- Input: synaptics - report INPUT_PROP_TOPBUTTONPAD property
- e1000e: Fix no connectivity when driver loaded with cable out
(regression in 3.12)
- autofs: fix lockref lookup
- vfs: fix races between __d_instantiate() and checks of dentry flags
- ALSA: hda - hdmi: Set converter channel count even without sink
(regression in 3.13)
- NFSd: Move default initialisers from create_client() to alloc_client()
- NFSd: call rpc_destroy_wait_queue() from free_client()
- NFSD: Call ->set_acl with a NULL ACL structure if no entries
- nfsd4: remove lockowner when removing lock stateid
- workqueue: fix bugs in wq_update_unbound_numa() failure path
- workqueue: fix a possible race condition between rescuer and pwq-release
- [arm] mvebu: mvebu-soc-id: add missing clk_put() call
(regression in 3.14)
- [arm] mvebu: mvebu-soc-id: keep clock enabled if PCIe unit is enabled
(regression in 3.14)
- ASoC: dapm: Skip CODEC<->CODEC links in connect_dai_link_widgets()
(regression in 3.14)
- [hppa] ratelimit userspace segfault printing
- [amd64] modify_ldt: Make support for 16-bit segments a runtime option
- sysfs: make sure read buffer is zeroed (possible regression in 3.13)
- Target/iser: Fix wrong connection requests list addition
- Target/iser: Fix iscsit_accept_np and rdma_cm racy flow
- iscsi-target: Change BUG_ON to REJECT in iscsit_process_nop_out
(regression in 3.11)
- target: fix memory leak on XCOPY
- [x86] drm/i915: Disable self-refresh for untiled fbs on i915gm
(regression in 3.14)
- [x86] drm/i915: move power domain init earlier during system resume
(regression in 3.14?)
- [x86] drm/i915: Fix unsafe loop iteration over vma whilst unbinding them
(regression in 3.12)
- iwlwifi: mvm: BT Coex - fix Look Up Table (regression in 3.13)
- PCI: Wrong register used to check pending traffic (regression in 3.14)
- dm crypt: fix cpu hotplug crash by removing per-cpu structure
- dm thin: allow metadata commit if pool is in PM_OUT_OF_DATA_SPACE mode
(regression in 3.14)
- dm thin: add timeout to stop out-of-data-space mode holding IO forever
- dmaengine: fix dmaengine_unmap failure
- dma: mv_xor: Flush descriptors before activating a channel
- tcm_fc: Fix free-after-use regression in ft_free_cmd
(regression in 3.13)
- ACPICA: Tables: Restore old behavor to favor 32-bit FADT addresses.
(regression in 3.14)
- ACPI: Revert "ACPI: Remove CONFIG_ACPI_PROCFS_POWER and cm_sbsc.c"
(regression in 3.13)
- ACPI: Revert "ACPI / Battery: Remove battery's proc directory"
(regression in 3.13)
- [x86] ACPI / video: Add use_native_backlight quirks for more systems
- ACPI: Revert "ACPI / AC: convert ACPI ac driver to platform bus"
(regression in 3.13)
- [x86] ACPI / TPM: Fix resume regression on Chromebooks
(regression in 3.14)
- i2c: s3c2410: resume race fix
- [x86] intel_pstate: Set turbo VID for BayTrail
- [s390] crypto: fix aes,des ctr mode concurrency finding.
- clk: Fix double free due to devm_clk_register()
- clk: Fix slab corruption in clk_unregister()
- [powerpc] powernv: Reset root port in firmware (regression in 3.14)
- [powerpc] irq work racing with timer interrupt can result in timer
interrupt hang (regression in 3.14)
- [powerpc] kexec: Fix "Processor X is stuck" issue during kexec from ST
mode (regression in 3.13)
- spi: core: Ignore unsupported Dual/Quad Transfer Mode bits
(regression in 3.12)
- libceph: fix corruption when using page_count 0 page in rbd
- media: V4L2: ov7670: fix a wrong index, potentially Oopsing the kernel
from user-space
http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.14.7
- perf: Limit perf_event_attr::sample_period to 63 bits
- perf: Fix race in removing an event
- SCSI: scsi_transport_sas: move bsg destructor into sas_rphy_remove
(regression in 3.13)
- [arm] 8051/1: put_user: fix possible data corruption in put_user
- [arm] 8064/1: fix v7-M signal return (regression in 3.11)
- cpufreq: remove race while accessing cur_policy
- firewire: revert to 4 GB RDMA, fix protocols using Memory Space
(regression in 3.14)
- [mips] Fix typo when reporting cache and ftlb errors for ImgTec cores
(regression in 3.14)
- dm cache: always split discards on cache block boundaries
- virtio_blk: fix race between start and stop queue
- sched/deadline: Restrict user params max value to 2^63 ns
- sched/dl: Fix race in dl_task_timer()
- drm/radeon: avoid crash if VM command submission isn't available
- [x86] drm/i915: Only copy back the modified fields to userspace from
execbuffer
- drm/radeon/dpm: resume fixes for some systems (regression in 3.14)
- libata: Blacklist queued trim for Crucial M500 (regression in 3.14.4)
- md: always set MD_RECOVERY_INTR when aborting a reshape or other
"resync".
- md: always set MD_RECOVERY_INTR when interrupting a reshape thread.
(regression in 3.12.9, 3.13)
- xhci: delete endpoints from bandwidth list before freeing whole device
- staging: comedi: ni_daq_700: add mux settling delay
- staging: r8192e_pci: fix htons error (regression in 3.14)
- ALSA: hda/analog - Fix silent output on ASUS A8JN (regression in 3.12)
- USB: io_ti: fix firmware download on big-endian machines (part 2)
- usb: pci-quirks: Prevent Sony VAIO t-series from switching usb ports
(regression in 3.12)
- percpu-refcount: fix usage of this_cpu_ops
- [x86] intel_pstate: Remove C0 tracking (regression in 3.14)
- [x86] intel_pstate: Correct rounding in busy calculation
(regression in 3.14)
- [x86] intel_pstate: add sample time scaling
- [x86] intel_pstate: Improve initial busy calculation
- mm: add !pte_present() check on existing hugetlb_entry callbacks
(CVE-2014-3940)
- mm: rmap: fix use-after-free in __put_anon_vma
- iser-target: Add missing target_put_sess_cmd for ImmedateData failure
- iscsi-target: Fix wrong buffer / buffer overrun in
iscsi_change_param_value()
- target: Fix alua_access_state attribute OOPs for un-configured devices
- netfilter: Fix potential use after free in ip6_route_me_harder()
- netfilter: nfnetlink: Fix use after free when it fails to process batch
- [x86] iommu/vt-d: Fix missing IOTLB flush in intel_iommu_unmap()
[ Ian Campbell ]
* [armhf] Enable VIRTIO_BALLOON and VIRTIO_PCI (Closes: #750742)
* [arm64] Update modules included in installer udebs.
* Include virtio_mmio in virtio-modules udeb when available.
[ Aurelien Jarno ]
* topconfig: Enable modular HW_RANDOM.
* [kernelarch-powerpc] Remove HW_RANDOM.
* [kernelarch-x86] Remove HW_RANDOM.
* [mips/4kc-malta] Remove HW_RANDOM.
* [mips/5kc-malta] Remove HW_RANDOM.
* [mips/octeon] Remove HW_RANDOM.
* [arm64] Enable modular RTC_DRV_PL031.
[ Ben Hutchings ]
* [ppc64el] Add kernel image, thanks to Mauricio Faria de Oliveira:
- Split common/big-endian powerpc64 options
- Add little-endian powerpc64 options
- Temporarily disable zImage
- powerpc/powernv: Add calls to support little endian host
- Add 'ppc64le' (uname output) to bug/include-model script
- udeb: Add packages based on ppc64 configuration
* netfilter: ipv4: defrag: set local_df flag on defragmented skb
(regression in 3.14.5)
* [mips] seccomp: Check system calls whenever seccomp is enabled,
even if audit and trace are disabled (Closes: #751417)
* auditsc: audit_krule mask accesses need bounds checking (CVE-2014-3917)
* fs,userns: Change inode_capable to capable_wrt_inode_uidgid
(CVE-2014-4014)
* SCSI: Fix spurious request sense in error handling (regression in 3.14)
* PCI/MSI: Fix memory leak in free_msi_irqs() (regression in 3.14)
* [rt] hrtimer: Disable MISSED_TIMER_OFFSETS_HIST as it will currently
result in a panic
-- Ben Hutchings <ben@decadent.org.uk> Mon, 16 Jun 2014 09:51:49 +0100
linux (3.14.5-1) unstable; urgency=high
* New upstream stable update:

View File

@ -6,6 +6,12 @@ CONFIG_ARCH_XGENE=y
CONFIG_SMP=y
CONFIG_XEN=y
##
## file: drivers/input/misc/Kconfig
##
CONFIG_INPUT_MISC=y
CONFIG_INPUT_UINPUT=m
##
## file: drivers/mmc/Kconfig
##
@ -46,6 +52,11 @@ CONFIG_SMSC911X=m
CONFIG_POWER_RESET_VEXPRESS=y
CONFIG_POWER_RESET_XGENE=y
##
## file: drivers/rtc/Kconfig
##
CONFIG_RTC_DRV_PL031=m
##
## file: drivers/tty/serial/Kconfig
##

View File

@ -785,3 +785,9 @@ CONFIG_SND_PCXHR=m
##
# CONFIG_SND_HDA_INTEL is not set
##
## file: drivers/virtio/Kconfig
##
# CONFIG_VIRTIO_PCI is not set
# CONFIG_VIRTIO_BALLOON is not set

View File

@ -689,6 +689,12 @@ CONFIG_SND_KIRKWOOD_SOC=m
CONFIG_SND_KIRKWOOD_SOC_OPENRD=m
CONFIG_SND_KIRKWOOD_SOC_T5325=m
##
## file: drivers/virtio/Kconfig
##
# CONFIG_VIRTIO_PCI is not set
# CONFIG_VIRTIO_BALLOON is not set
##
## file: unknown
##

View File

@ -544,3 +544,9 @@ CONFIG_AX25=m
CONFIG_NETROM=m
CONFIG_ROSE=m
##
## file: drivers/virtio/Kconfig
##
# CONFIG_VIRTIO_PCI is not set
# CONFIG_VIRTIO_BALLOON is not set

View File

@ -565,6 +565,12 @@ CONFIG_AX25=m
CONFIG_NETROM=m
CONFIG_ROSE=m
##
## file: drivers/virtio/Kconfig
##
# CONFIG_VIRTIO_PCI is not set
# CONFIG_VIRTIO_BALLOON is not set
##
## file: unknown
##

View File

@ -138,7 +138,6 @@ CONFIG_OMAP_INTERCONNECT=m
##
## file: drivers/char/hw_random/Kconfig
##
CONFIG_HW_RANDOM=m
CONFIG_HW_RANDOM_OMAP=m
##

View File

@ -335,7 +335,7 @@ CONFIG_TELCLOCK=m
##
## file: drivers/char/hw_random/Kconfig
##
# CONFIG_HW_RANDOM is not set
CONFIG_HW_RANDOM=m
# CONFIG_HW_RANDOM_TIMERIOMEM is not set
CONFIG_HW_RANDOM_VIRTIO=m
CONFIG_HW_RANDOM_TPM=m

View File

@ -1,7 +1,10 @@
# CONFIG_PREEMPT_VOLUNTARY is not set
CONFIG_PREEMPT_RT_FULL=y
CONFIG_SCHED_TRACER=y
CONFIG_MISSED_TIMER_OFFSETS_HIST=y
#. This option is broken after commit 84ea7fe37908
#. ('hrtimer: Set expiry time before switch_hrtimer_base()') but should be
#. enabled when this is resolved
# CONFIG_MISSED_TIMER_OFFSETS_HIST is not set
CONFIG_WAKEUP_LATENCY_HIST=y
## disable aufs as it's not needed on rt and conflicts with fs-dentry-use-seqlock.patch

View File

@ -107,12 +107,6 @@ CONFIG_MTD_PHYSMAP=y
CONFIG_THERMAL=y
CONFIG_CPU_THERMAL=y
##
## file: drivers/virtio/Kconfig
##
# CONFIG_VIRTIO_PCI is not set
# CONFIG_VIRTIO_BALLOON is not set
##
## file: lib/xz/Kconfig
##

View File

@ -10,6 +10,7 @@ CONFIG_NUMA=y
CONFIG_SCHED_SMT=y
CONFIG_CMDLINE="console=hvsi0 console=hvc0 console=ttyS0,9600 console=tty0"
CONFIG_KERNEL_START=0xc000000000000000
CONFIG_PPC_TRANSACTIONAL_MEM=y
##
## file: arch/powerpc/platforms/Kconfig
@ -18,16 +19,6 @@ CONFIG_RTAS_PROC=y
CONFIG_RTAS_FLASH=m
CONFIG_IBMEBUS=y
##
## file: arch/powerpc/platforms/cell/Kconfig
##
CONFIG_PPC_IBM_CELL_BLADE=y
# CONFIG_PPC_CELLEB is not set
CONFIG_SPU_FS=m
CONFIG_SPU_FS_64K_LS=y
CONFIG_CBE_RAS=y
CONFIG_CBE_THERM=m
##
## file: arch/powerpc/platforms/Kconfig.cputype
##
@ -35,33 +26,6 @@ CONFIG_PPC64=y
# CONFIG_TUNE_CELL is not set
CONFIG_ALTIVEC=y
CONFIG_SMP=y
CONFIG_NR_CPUS=32
##
## file: arch/powerpc/platforms/maple/Kconfig
##
CONFIG_PPC_MAPLE=y
##
## file: arch/powerpc/platforms/pasemi/Kconfig
##
CONFIG_PPC_PASEMI=y
CONFIG_PPC_PASEMI_MDIO=m
##
## file: arch/powerpc/platforms/ps3/Kconfig
##
CONFIG_PPC_PS3=y
CONFIG_PS3_ADVANCED=y
CONFIG_PS3_HTAB_SIZE=20
# CONFIG_PS3_DYNAMIC_DMA is not set
CONFIG_PS3_PS3AV=y
CONFIG_PS3_SYS_MANAGER=y
CONFIG_PS3_DISK=m
CONFIG_PS3_ROM=m
CONFIG_PS3_FLASH=m
CONFIG_PS3_VRAM=m
CONFIG_PS3_LPM=m
##
## file: arch/powerpc/platforms/pseries/Kconfig
@ -90,29 +54,6 @@ CONFIG_BLK_DEV_RSXX=m
##
## file: drivers/char/hw_random/Kconfig
##
CONFIG_HW_RANDOM=m
CONFIG_HW_RANDOM_PASEMI=m
##
## file: drivers/cpufreq/Kconfig.powerpc
##
CONFIG_CPU_FREQ_CBE=m
CONFIG_CPU_FREQ_PMAC64=y
#. It's a bool
CONFIG_PPC_PASEMI_CPUFREQ=y
##
## file: drivers/i2c/busses/Kconfig
##
CONFIG_I2C_PASEMI=m
##
## file: drivers/macintosh/Kconfig
##
CONFIG_WINDFARM=m
CONFIG_WINDFARM_PM81=m
CONFIG_WINDFARM_PM91=m
CONFIG_WINDFARM_PM112=m
##
## file: drivers/net/ethernet/ibm/Kconfig
@ -136,28 +77,11 @@ CONFIG_IBM_EMAC_RX_SKB_HEADROOM=0
##
# CONFIG_MV643XX_ETH is not set
##
## file: drivers/net/ethernet/pasemi/Kconfig
##
CONFIG_PASEMI_MAC=m
##
## file: drivers/net/ethernet/toshiba/Kconfig
##
CONFIG_GELIC_NET=m
CONFIG_GELIC_WIRELESS=y
CONFIG_SPIDER_NET=m
##
## file: drivers/pci/hotplug/Kconfig
##
# CONFIG_HOTPLUG_PCI is not set
##
## file: drivers/rtc/Kconfig
##
CONFIG_RTC_DRV_PS3=m
##
## file: drivers/scsi/Kconfig
##
@ -189,8 +113,6 @@ CONFIG_HVCS=m
# CONFIG_FB_VALKYRIE is not set
# CONFIG_FB_IMSTT is not set
# CONFIG_FB_ATY128 is not set
CONFIG_FB_PS3=y
CONFIG_FB_PS3_DEFAULT_SIZE_M=9
##
## file: drivers/watchdog/Kconfig
@ -207,9 +129,3 @@ CONFIG_SPARSEMEM_MANUAL=y
## end choice
CONFIG_SPARSEMEM_VMEMMAP=y
##
## file: sound/ppc/Kconfig
##
CONFIG_SND_PS3=m
CONFIG_SND_PS3_DEFAULT_START_DELAY=2000

View File

@ -0,0 +1,96 @@
##
## file: arch/powerpc/platforms/Kconfig.cputype
##
CONFIG_NR_CPUS=32
##
## file: arch/powerpc/platforms/cell/Kconfig
##
CONFIG_PPC_IBM_CELL_BLADE=y
# CONFIG_PPC_CELLEB is not set
CONFIG_SPU_FS=m
CONFIG_SPU_FS_64K_LS=y
CONFIG_CBE_RAS=y
CONFIG_CBE_THERM=m
##
## file: arch/powerpc/platforms/maple/Kconfig
##
CONFIG_PPC_MAPLE=y
##
## file: arch/powerpc/platforms/pasemi/Kconfig
##
CONFIG_PPC_PASEMI=y
CONFIG_PPC_PASEMI_MDIO=m
##
## file: arch/powerpc/platforms/ps3/Kconfig
##
CONFIG_PPC_PS3=y
CONFIG_PS3_ADVANCED=y
CONFIG_PS3_HTAB_SIZE=20
# CONFIG_PS3_DYNAMIC_DMA is not set
CONFIG_PS3_PS3AV=y
CONFIG_PS3_SYS_MANAGER=y
CONFIG_PS3_DISK=m
CONFIG_PS3_ROM=m
CONFIG_PS3_FLASH=m
CONFIG_PS3_VRAM=m
CONFIG_PS3_LPM=m
##
## file: drivers/char/hw_random/Kconfig
##
CONFIG_HW_RANDOM_PASEMI=m
##
## file: drivers/cpufreq/Kconfig.powerpc
##
CONFIG_CPU_FREQ_CBE=m
CONFIG_CPU_FREQ_PMAC64=y
#. It's a bool
CONFIG_PPC_PASEMI_CPUFREQ=y
##
## file: drivers/i2c/busses/Kconfig
##
CONFIG_I2C_PASEMI=m
##
## file: drivers/macintosh/Kconfig
##
CONFIG_WINDFARM=m
CONFIG_WINDFARM_PM81=m
CONFIG_WINDFARM_PM91=m
CONFIG_WINDFARM_PM112=m
##
## file: drivers/net/ethernet/pasemi/Kconfig
##
CONFIG_PASEMI_MAC=m
##
## file: drivers/net/ethernet/toshiba/Kconfig
##
CONFIG_GELIC_NET=m
CONFIG_GELIC_WIRELESS=y
CONFIG_SPIDER_NET=m
##
## file: drivers/rtc/Kconfig
##
CONFIG_RTC_DRV_PS3=m
##
## file: drivers/video/Kconfig
##
CONFIG_FB_PS3=y
CONFIG_FB_PS3_DEFAULT_SIZE_M=9
##
## file: sound/ppc/Kconfig
##
CONFIG_SND_PS3=m
CONFIG_SND_PS3_DEFAULT_START_DELAY=2000

View File

@ -0,0 +1,34 @@
##
## file: arch/powerpc/Kconfig
##
## choice: Page size
# CONFIG_PPC_4K_PAGES is not set
CONFIG_PPC_64K_PAGES=y
## end choice
##
## file: arch/powerpc/platforms/Kconfig.cputype
##
## choice: Endianness selection
# CONFIG_CPU_BIG_ENDIAN is not set
CONFIG_CPU_LITTLE_ENDIAN=y
## end choice
CONFIG_NR_CPUS=2048
##
## file: arch/powerpc/platforms/powermac/Kconfig
##
#. This needs to be explicitly disabled currently (3.15)
# CONFIG_PPC_PMAC is not set
##
## file: drivers/cpufreq/Kconfig
##
## choice: Default CPUFreq governor
# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set
# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y
# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
## end choice

View File

@ -310,7 +310,6 @@ CONFIG_AGP_VIA=y
##
## file: drivers/char/hw_random/Kconfig
##
CONFIG_HW_RANDOM=m
CONFIG_HW_RANDOM_INTEL=m
CONFIG_HW_RANDOM_AMD=m
CONFIG_HW_RANDOM_GEODE=m

View File

@ -166,11 +166,6 @@ CONFIG_PPDEV=m
CONFIG_R3964=m
CONFIG_APPLICOM=m
##
## file: drivers/char/hw_random/Kconfig
##
CONFIG_HW_RANDOM=m
##
## file: drivers/char/ipmi/Kconfig
##

View File

@ -169,11 +169,6 @@ CONFIG_PPDEV=m
CONFIG_R3964=m
CONFIG_APPLICOM=m
##
## file: drivers/char/hw_random/Kconfig
##
CONFIG_HW_RANDOM=m
##
## file: drivers/char/ipmi/Kconfig
##

View File

@ -37,7 +37,6 @@ CONFIG_PATA_OCTEON_CF=y
##
## file: drivers/char/hw_random/Kconfig
##
CONFIG_HW_RANDOM=m
CONFIG_HW_RANDOM_OCTEON=m
##

View File

@ -30,4 +30,4 @@ configs: powerpc/config.powerpc powerpc/config.powerpc-smp
hardware: 64-bit PowerPC
[powerpc64_image]
configs: kernelarch-powerpc/config-arch-64
configs: kernelarch-powerpc/config-arch-64 kernelarch-powerpc/config-arch-64-be

View File

@ -19,4 +19,4 @@ gcc-4.8: gcc-4.8 (>= 4.8.2-21)
hardware: 64-bit PowerPC
[powerpc64_image]
configs: kernelarch-powerpc/config-arch-64
configs: kernelarch-powerpc/config-arch-64 kernelarch-powerpc/config-arch-64-be

View File

@ -1,4 +1,18 @@
[base]
flavours:
powerpc64le
kernel-arch: powerpc
featuresets:
# empty
[build]
image-file: vmlinux
[image]
configs:
suggests: mkvmlinuz
install-stem: vmlinux
[powerpc64le_description]
hardware: Little-endian 64-bit PowerPC
[powerpc64le_image]
configs: kernelarch-powerpc/config-arch-64 kernelarch-powerpc/config-arch-64-le

View File

@ -1,3 +1,2 @@
#include <nic-modules>
smc91x
smsc911x

View File

@ -1,2 +1,2 @@
#include <scsi-modules>
sg
xen-blkfront

View File

@ -5,3 +5,4 @@ virtio_scsi
# Some architectures do not have PCI bus
virtio_pci ?
virtio_mmio ?

View File

@ -0,0 +1,2 @@
# arch version flavour installedname suffix build-depends
ppc64el - powerpc64le - - -

View File

@ -0,0 +1 @@
#include "../../../ppc64/modules/ppc64/ata-modules"

View File

@ -0,0 +1 @@
#include "../../../ppc64/modules/ppc64/btrfs-modules"

View File

@ -0,0 +1 @@
#include "../../../ppc64/modules/ppc64/cdrom-core-modules"

View File

@ -0,0 +1 @@
#include "../../../ppc64/modules/ppc64/core-modules"

View File

@ -0,0 +1 @@
#include "../../../ppc64/modules/ppc64/crc-modules"

View File

@ -0,0 +1 @@
#include "../../../ppc64/modules/ppc64/crypto-dm-modules"

View File

@ -0,0 +1 @@
#include "../../../ppc64/modules/ppc64/crypto-modules"

View File

@ -0,0 +1 @@
#include "../../../ppc64/modules/ppc64/event-modules"

View File

@ -0,0 +1 @@
#include "../../../ppc64/modules/ppc64/ext4-modules"

View File

@ -0,0 +1 @@
#include "../../../ppc64/modules/ppc64/fancontrol-modules"

View File

@ -0,0 +1 @@
#include "../../../ppc64/modules/ppc64/fat-modules"

View File

@ -0,0 +1 @@
#include "../../../ppc64/modules/ppc64/firewire-core-modules"

View File

@ -0,0 +1 @@
#include "../../../ppc64/modules/ppc64/fuse-modules"

View File

@ -0,0 +1 @@
#include "../../../ppc64/modules/ppc64/hypervisor-modules"

View File

@ -0,0 +1 @@
#include "../../../ppc64/modules/ppc64/input-modules"

View File

@ -0,0 +1 @@
#include "../../../ppc64/modules/ppc64/isofs-modules"

View File

@ -0,0 +1 @@
#include "../../../ppc64/modules/ppc64/jfs-modules"

View File

@ -0,0 +1 @@
#include "../../../ppc64/modules/ppc64/kernel-image"

View File

@ -0,0 +1 @@
#include "../../../ppc64/modules/ppc64/loop-modules"

View File

@ -0,0 +1 @@
#include "../../../ppc64/modules/ppc64/md-modules"

View File

@ -0,0 +1 @@
#include "../../../ppc64/modules/ppc64/mouse-modules"

View File

@ -0,0 +1 @@
#include "../../../ppc64/modules/ppc64/multipath-modules"

View File

@ -0,0 +1 @@
#include "../../../ppc64/modules/ppc64/nbd-modules"

View File

@ -0,0 +1,5 @@
#include "../../../ppc64/modules/ppc64/nic-modules"
airport -
ps3_gelic -
spidernet -

View File

@ -0,0 +1 @@
#include "../../../ppc64/modules/ppc64/nic-shared-modules"

View File

@ -0,0 +1 @@
#include "../../../ppc64/modules/ppc64/ppp-modules"

View File

@ -0,0 +1 @@
#include "../../../ppc64/modules/ppc64/sata-modules"

View File

@ -0,0 +1 @@
#include "../../../ppc64/modules/ppc64/scsi-common-modules"

View File

@ -0,0 +1 @@
#include "../../../ppc64/modules/ppc64/scsi-core-modules"

View File

@ -0,0 +1 @@
#include "../../../ppc64/modules/ppc64/scsi-extra-modules"

View File

@ -0,0 +1,3 @@
#include "../../../ppc64/modules/ppc64/scsi-modules"
ps3rom -

View File

@ -0,0 +1 @@
#include "../../../ppc64/modules/ppc64/serial-modules"

View File

@ -0,0 +1 @@
#include "../../../ppc64/modules/ppc64/squashfs-modules"

View File

@ -0,0 +1 @@
#include "../../../ppc64/modules/ppc64/udf-modules"

View File

@ -0,0 +1 @@
#include "../../../ppc64/modules/ppc64/uinput-modules"

View File

@ -0,0 +1 @@
#include "../../../ppc64/modules/ppc64/usb-modules"

View File

@ -0,0 +1 @@
#include "../../../ppc64/modules/ppc64/usb-serial-modules"

View File

@ -0,0 +1 @@
#include "../../../ppc64/modules/ppc64/usb-storage-modules"

View File

@ -0,0 +1 @@
#include "../../../ppc64/modules/ppc64/virtio-modules"

View File

@ -0,0 +1 @@
#include "../../../ppc64/modules/ppc64/xfs-modules"

1
debian/installer/ppc64el/package-list vendored Symbolic link
View File

@ -0,0 +1 @@
../ppc64/package-list

View File

@ -0,0 +1,33 @@
From: Alexei Starovoitov <ast@plumgrid.com>
Date: Wed, 4 Jun 2014 15:49:50 -0700
Subject: PCI/MSI: Fix memory leak in free_msi_irqs()
Origin: https://git.kernel.org/linus/b701c0b1fe819a2083fc6ec5332e0e4492b9516d
free_msi_irqs() is leaking memory, since list_for_each_entry(entry,
&dev->msi_list, list) {...} is never executed, because dev->msi_list is
made empty by the loop just above this one.
Fix it by relying on zero termination of attribute array like
populate_msi_sysfs() does.
Fixes: 1c51b50c2995 ("PCI/MSI: Export MSI mode using attributes, not kobjects")
Signed-off-by: Alexei Starovoitov <ast@plumgrid.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
CC: stable@vger.kernel.org # v3.14+
---
drivers/pci/msi.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/drivers/pci/msi.c
+++ b/drivers/pci/msi.c
@@ -414,7 +414,7 @@ static void free_msi_irqs(struct pci_dev
if (dev->msi_irq_groups) {
sysfs_remove_groups(&dev->dev.kobj, dev->msi_irq_groups);
msi_attrs = dev->msi_irq_groups[0]->attrs;
- list_for_each_entry(entry, &dev->msi_list, list) {
+ while (msi_attrs[count]) {
dev_attr = container_of(msi_attrs[count],
struct device_attribute, attr);
kfree(dev_attr->attr.name);

View File

@ -0,0 +1,80 @@
From: Andy Lutomirski <luto@amacapital.net>
Date: Wed, 28 May 2014 23:09:58 -0400
Subject: auditsc: audit_krule mask accesses need bounds checking
Origin: https://git.kernel.org/linus/a3c54931199565930d6d84f4c3456f6440aefd41
Fixes an easy DoS and possible information disclosure.
This does nothing about the broken state of x32 auditing.
eparis: If the admin has enabled auditd and has specifically loaded
audit rules. This bug has been around since before git. Wow...
Cc: stable@vger.kernel.org
Signed-off-by: Andy Lutomirski <luto@amacapital.net>
Signed-off-by: Eric Paris <eparis@redhat.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
---
kernel/auditsc.c | 27 ++++++++++++++++++---------
1 file changed, 18 insertions(+), 9 deletions(-)
--- a/kernel/auditsc.c
+++ b/kernel/auditsc.c
@@ -720,6 +720,22 @@ static enum audit_state audit_filter_tas
return AUDIT_BUILD_CONTEXT;
}
+static int audit_in_mask(const struct audit_krule *rule, unsigned long val)
+{
+ int word, bit;
+
+ if (val > 0xffffffff)
+ return false;
+
+ word = AUDIT_WORD(val);
+ if (word >= AUDIT_BITMASK_SIZE)
+ return false;
+
+ bit = AUDIT_BIT(val);
+
+ return rule->mask[word] & bit;
+}
+
/* At syscall entry and exit time, this filter is called if the
* audit_state is not low enough that auditing cannot take place, but is
* also not high enough that we already know we have to write an audit
@@ -737,11 +753,8 @@ static enum audit_state audit_filter_sys
rcu_read_lock();
if (!list_empty(list)) {
- int word = AUDIT_WORD(ctx->major);
- int bit = AUDIT_BIT(ctx->major);
-
list_for_each_entry_rcu(e, list, list) {
- if ((e->rule.mask[word] & bit) == bit &&
+ if (audit_in_mask(&e->rule, ctx->major) &&
audit_filter_rules(tsk, &e->rule, ctx, NULL,
&state, false)) {
rcu_read_unlock();
@@ -761,20 +774,16 @@ static enum audit_state audit_filter_sys
static int audit_filter_inode_name(struct task_struct *tsk,
struct audit_names *n,
struct audit_context *ctx) {
- int word, bit;
int h = audit_hash_ino((u32)n->ino);
struct list_head *list = &audit_inode_hash[h];
struct audit_entry *e;
enum audit_state state;
- word = AUDIT_WORD(ctx->major);
- bit = AUDIT_BIT(ctx->major);
-
if (list_empty(list))
return 0;
list_for_each_entry_rcu(e, list, list) {
- if ((e->rule.mask[word] & bit) == bit &&
+ if (audit_in_mask(&e->rule, ctx->major) &&
audit_filter_rules(tsk, &e->rule, ctx, n, &state, false)) {
ctx->current_state = state;
return 1;

View File

@ -0,0 +1,191 @@
From: Andy Lutomirski <luto@amacapital.net>
Date: Tue, 10 Jun 2014 12:45:42 -0700
Subject: fs,userns: Change inode_capable to capable_wrt_inode_uidgid
Origin: https://git.kernel.org/linus/23adbe12ef7d3d4195e80800ab36b37bee28cd03
The kernel has no concept of capabilities with respect to inodes; inodes
exist independently of namespaces. For example, inode_capable(inode,
CAP_LINUX_IMMUTABLE) would be nonsense.
This patch changes inode_capable to check for uid and gid mappings and
renames it to capable_wrt_inode_uidgid, which should make it more
obvious what it does.
Fixes CVE-2014-4014.
Cc: Theodore Ts'o <tytso@mit.edu>
Cc: Serge Hallyn <serge.hallyn@ubuntu.com>
Cc: "Eric W. Biederman" <ebiederm@xmission.com>
Cc: Dave Chinner <david@fromorbit.com>
Cc: stable@vger.kernel.org
Signed-off-by: Andy Lutomirski <luto@amacapital.net>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
---
fs/attr.c | 8 ++++----
fs/inode.c | 10 +++++++---
fs/namei.c | 11 ++++++-----
fs/xfs/xfs_ioctl.c | 2 +-
include/linux/capability.h | 2 +-
kernel/capability.c | 20 ++++++++------------
6 files changed, 27 insertions(+), 26 deletions(-)
--- a/fs/attr.c
+++ b/fs/attr.c
@@ -50,14 +50,14 @@ int inode_change_ok(const struct inode *
if ((ia_valid & ATTR_UID) &&
(!uid_eq(current_fsuid(), inode->i_uid) ||
!uid_eq(attr->ia_uid, inode->i_uid)) &&
- !inode_capable(inode, CAP_CHOWN))
+ !capable_wrt_inode_uidgid(inode, CAP_CHOWN))
return -EPERM;
/* Make sure caller can chgrp. */
if ((ia_valid & ATTR_GID) &&
(!uid_eq(current_fsuid(), inode->i_uid) ||
(!in_group_p(attr->ia_gid) && !gid_eq(attr->ia_gid, inode->i_gid))) &&
- !inode_capable(inode, CAP_CHOWN))
+ !capable_wrt_inode_uidgid(inode, CAP_CHOWN))
return -EPERM;
/* Make sure a caller can chmod. */
@@ -67,7 +67,7 @@ int inode_change_ok(const struct inode *
/* Also check the setgid bit! */
if (!in_group_p((ia_valid & ATTR_GID) ? attr->ia_gid :
inode->i_gid) &&
- !inode_capable(inode, CAP_FSETID))
+ !capable_wrt_inode_uidgid(inode, CAP_FSETID))
attr->ia_mode &= ~S_ISGID;
}
@@ -160,7 +160,7 @@ void setattr_copy(struct inode *inode, c
umode_t mode = attr->ia_mode;
if (!in_group_p(inode->i_gid) &&
- !inode_capable(inode, CAP_FSETID))
+ !capable_wrt_inode_uidgid(inode, CAP_FSETID))
mode &= ~S_ISGID;
inode->i_mode = mode;
}
--- a/fs/inode.c
+++ b/fs/inode.c
@@ -1842,14 +1842,18 @@ EXPORT_SYMBOL(inode_init_owner);
* inode_owner_or_capable - check current task permissions to inode
* @inode: inode being checked
*
- * Return true if current either has CAP_FOWNER to the inode, or
- * owns the file.
+ * Return true if current either has CAP_FOWNER in a namespace with the
+ * inode owner uid mapped, or owns the file.
*/
bool inode_owner_or_capable(const struct inode *inode)
{
+ struct user_namespace *ns;
+
if (uid_eq(current_fsuid(), inode->i_uid))
return true;
- if (inode_capable(inode, CAP_FOWNER))
+
+ ns = current_user_ns();
+ if (ns_capable(ns, CAP_FOWNER) && kuid_has_mapping(ns, inode->i_uid))
return true;
return false;
}
--- a/fs/namei.c
+++ b/fs/namei.c
@@ -332,10 +332,11 @@ int generic_permission(struct inode *ino
if (S_ISDIR(inode->i_mode)) {
/* DACs are overridable for directories */
- if (inode_capable(inode, CAP_DAC_OVERRIDE))
+ if (capable_wrt_inode_uidgid(inode, CAP_DAC_OVERRIDE))
return 0;
if (!(mask & MAY_WRITE))
- if (inode_capable(inode, CAP_DAC_READ_SEARCH))
+ if (capable_wrt_inode_uidgid(inode,
+ CAP_DAC_READ_SEARCH))
return 0;
return -EACCES;
}
@@ -345,7 +346,7 @@ int generic_permission(struct inode *ino
* at least one exec bit set.
*/
if (!(mask & MAY_EXEC) || (inode->i_mode & S_IXUGO))
- if (inode_capable(inode, CAP_DAC_OVERRIDE))
+ if (capable_wrt_inode_uidgid(inode, CAP_DAC_OVERRIDE))
return 0;
/*
@@ -353,7 +354,7 @@ int generic_permission(struct inode *ino
*/
mask &= MAY_READ | MAY_WRITE | MAY_EXEC;
if (mask == MAY_READ)
- if (inode_capable(inode, CAP_DAC_READ_SEARCH))
+ if (capable_wrt_inode_uidgid(inode, CAP_DAC_READ_SEARCH))
return 0;
return -EACCES;
@@ -2370,7 +2371,7 @@ static inline int check_sticky(struct in
return 0;
if (uid_eq(dir->i_uid, fsuid))
return 0;
- return !inode_capable(inode, CAP_FOWNER);
+ return !capable_wrt_inode_uidgid(inode, CAP_FOWNER);
}
/*
--- a/fs/xfs/xfs_ioctl.c
+++ b/fs/xfs/xfs_ioctl.c
@@ -1241,7 +1241,7 @@ xfs_ioctl_setattr(
* cleared upon successful return from chown()
*/
if ((ip->i_d.di_mode & (S_ISUID|S_ISGID)) &&
- !inode_capable(VFS_I(ip), CAP_FSETID))
+ !capable_wrt_inode_uidgid(VFS_I(ip), CAP_FSETID))
ip->i_d.di_mode &= ~(S_ISUID|S_ISGID);
/*
--- a/include/linux/capability.h
+++ b/include/linux/capability.h
@@ -210,7 +210,7 @@ extern bool has_ns_capability_noaudit(st
struct user_namespace *ns, int cap);
extern bool capable(int cap);
extern bool ns_capable(struct user_namespace *ns, int cap);
-extern bool inode_capable(const struct inode *inode, int cap);
+extern bool capable_wrt_inode_uidgid(const struct inode *inode, int cap);
extern bool file_ns_capable(const struct file *file, struct user_namespace *ns, int cap);
/* audit system wants to get cap info from files as well */
--- a/kernel/capability.c
+++ b/kernel/capability.c
@@ -433,23 +433,19 @@ bool capable(int cap)
EXPORT_SYMBOL(capable);
/**
- * inode_capable - Check superior capability over inode
+ * capable_wrt_inode_uidgid - Check nsown_capable and uid and gid mapped
* @inode: The inode in question
* @cap: The capability in question
*
- * Return true if the current task has the given superior capability
- * targeted at it's own user namespace and that the given inode is owned
- * by the current user namespace or a child namespace.
- *
- * Currently we check to see if an inode is owned by the current
- * user namespace by seeing if the inode's owner maps into the
- * current user namespace.
- *
+ * Return true if the current task has the given capability targeted at
+ * its own user namespace and that the given inode's uid and gid are
+ * mapped into the current user namespace.
*/
-bool inode_capable(const struct inode *inode, int cap)
+bool capable_wrt_inode_uidgid(const struct inode *inode, int cap)
{
struct user_namespace *ns = current_user_ns();
- return ns_capable(ns, cap) && kuid_has_mapping(ns, inode->i_uid);
+ return ns_capable(ns, cap) && kuid_has_mapping(ns, inode->i_uid) &&
+ kgid_has_mapping(ns, inode->i_gid);
}
-EXPORT_SYMBOL(inode_capable);
+EXPORT_SYMBOL(capable_wrt_inode_uidgid);

View File

@ -0,0 +1,105 @@
From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Date: Tue, 20 May 2014 11:01:28 +1000
Subject: powerpc/powernv: Add calls to support little endian host
Origin: https://git.kernel.org/linus/4926616c77435e735c59288f838e7761baec4a6c
When running as a powernv "host" system on P8, we need to switch
the endianness of interrupt handlers. This does it via the appropriate
call to the OPAL firmware which may result in just switching HID0:HILE
but depending on the processor version might need to do a few more
things. This call must be done early before any other processor has
been brought out of firmware.
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Andy Whitcroft <apw@canonical.com>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
---
arch/powerpc/include/asm/opal.h | 7 +++++++
arch/powerpc/platforms/powernv/opal-wrappers.S | 1 +
arch/powerpc/platforms/powernv/opal.c | 22 ++++++++++++++++++++++
3 files changed, 30 insertions(+)
diff --git a/arch/powerpc/include/asm/opal.h b/arch/powerpc/include/asm/opal.h
index 81720ff..ea8bba7 100644
--- a/arch/powerpc/include/asm/opal.h
+++ b/arch/powerpc/include/asm/opal.h
@@ -154,6 +154,7 @@ extern int opal_enter_rtas(struct rtas_args *args,
#define OPAL_LPC_READ 67
#define OPAL_LPC_WRITE 68
#define OPAL_RETURN_CPU 69
+#define OPAL_REINIT_CPUS 70
#define OPAL_ELOG_READ 71
#define OPAL_ELOG_WRITE 72
#define OPAL_ELOG_ACK 73
@@ -725,6 +726,11 @@ struct OpalIoPhb3ErrorData {
uint64_t pestB[OPAL_PHB3_NUM_PEST_REGS];
};
+enum {
+ OPAL_REINIT_CPUS_HILE_BE = (1 << 0),
+ OPAL_REINIT_CPUS_HILE_LE = (1 << 1),
+};
+
typedef struct oppanel_line {
const char * line;
uint64_t line_len;
@@ -849,6 +855,7 @@ int64_t opal_pci_next_error(uint64_t phb_id, uint64_t *first_frozen_pe,
uint16_t *pci_error_type, uint16_t *severity);
int64_t opal_pci_poll(uint64_t phb_id);
int64_t opal_return_cpu(void);
+int64_t opal_reinit_cpus(uint64_t flags);
int64_t opal_xscom_read(uint32_t gcid, uint64_t pcb_addr, __be64 *val);
int64_t opal_xscom_write(uint32_t gcid, uint64_t pcb_addr, uint64_t val);
diff --git a/arch/powerpc/platforms/powernv/opal-wrappers.S b/arch/powerpc/platforms/powernv/opal-wrappers.S
index b5ebc54..4abbff2 100644
--- a/arch/powerpc/platforms/powernv/opal-wrappers.S
+++ b/arch/powerpc/platforms/powernv/opal-wrappers.S
@@ -124,6 +124,7 @@ OPAL_CALL(opal_xscom_write, OPAL_XSCOM_WRITE);
OPAL_CALL(opal_lpc_read, OPAL_LPC_READ);
OPAL_CALL(opal_lpc_write, OPAL_LPC_WRITE);
OPAL_CALL(opal_return_cpu, OPAL_RETURN_CPU);
+OPAL_CALL(opal_reinit_cpus, OPAL_REINIT_CPUS);
OPAL_CALL(opal_read_elog, OPAL_ELOG_READ);
OPAL_CALL(opal_send_ack_elog, OPAL_ELOG_ACK);
OPAL_CALL(opal_get_elog_size, OPAL_ELOG_SIZE);
diff --git a/arch/powerpc/platforms/powernv/opal.c b/arch/powerpc/platforms/powernv/opal.c
index 360ad80c..539243e 100644
--- a/arch/powerpc/platforms/powernv/opal.c
+++ b/arch/powerpc/platforms/powernv/opal.c
@@ -57,6 +57,21 @@ static DEFINE_SPINLOCK(opal_notifier_lock);
static uint64_t last_notified_mask = 0x0ul;
static atomic_t opal_notifier_hold = ATOMIC_INIT(0);
+static void opal_reinit_cores(void)
+{
+ /* Do the actual re-init, This will clobber all FPRs, VRs, etc...
+ *
+ * It will preserve non volatile GPRs and HSPRG0/1. It will
+ * also restore HIDs and other SPRs to their original value
+ * but it might clobber a bunch.
+ */
+#ifdef __BIG_ENDIAN__
+ opal_reinit_cpus(OPAL_REINIT_CPUS_HILE_BE);
+#else
+ opal_reinit_cpus(OPAL_REINIT_CPUS_HILE_LE);
+#endif
+}
+
int __init early_init_dt_scan_opal(unsigned long node,
const char *uname, int depth, void *data)
{
@@ -96,6 +111,13 @@ int __init early_init_dt_scan_opal(unsigned long node,
printk("OPAL V1 detected !\n");
}
+ /* Reinit all cores with the right endian */
+ opal_reinit_cores();
+
+ /* Restore some bits */
+ if (cur_cpu_spec->cpu_restore)
+ cur_cpu_spec->cpu_restore();
+
return 1;
}

View File

@ -0,0 +1,49 @@
From: Mauricio Faria de Oliveira <mauricfo@linux.vnet.ibm.com>
Date: Wed, 4 Jun 2014 09:06:27 -0300
Subject: ppc64el: kernel: patch: temporarily disable zImage
Debian ppc64el will wait for the 'powerpc/boot: 64bit little endian wrapper'
(zImage) patches upstream rather than shipping 32-bit tools for zImage. The
patches are currently in Ben Herrenschmidt's linux-next tree [1].
The patches are not being carried over instead of this workaround because,
even without both, the build process does produces vmlinux, only failing for
zImage. So, it's ok to just work-around this for now, as we pick vmlinux.
The workaround patch just avoids this build error:
[...]
LD vmlinux
SYSMAP System.map
[...]
WRAP arch/powerpc/boot/zImage.pseries
ld: unrecognised emulation mode: elf32ppc
Supported emulations: elf64lppc elf32lppc elf32lppclinux elf32lppcsim
make[6]: *** [arch/powerpc/boot/zImage.pseries] Error 1
make[5]: *** [zImage] Error 2
[1] https://git.kernel.org/cgit/linux/kernel/git/next/linux-next.git/log/?qt=grep&q=powerpc%2Fboot
(15 commits with message prefix 'powerpc/boot:' dated of 2014-04-28)
Signed-off-by: Mauricio Faria de Oliveira <mauricfo@linux.vnet.ibm.com>
---
Index: linux-3.14.2/arch/powerpc/boot/Makefile
===================================================================
--- linux-3.14.2.orig/arch/powerpc/boot/Makefile 2014-05-02 16:52:37.000000000 -0300
+++ linux-3.14.2/arch/powerpc/boot/Makefile 2014-05-07 09:39:11.000000000 -0300
@@ -344,6 +344,15 @@
$(obj)/%.dtb: $(src)/dts/%.dts FORCE
$(call if_changed_dep,dtc)
+# Debian ppc64el will wait for the 'powerpc/boot: 64bit little endian wrapper'
+# (zImage) patches upstream rather than shipping 32-bit tools for zImage.
+# This makes the next conditional block to pick vmlinux.strip as image-y.
+ifdef CONFIG_PPC64
+ifdef CONFIG_CPU_LITTLE_ENDIAN
+image-y :=
+endif
+endif
+
# If there isn't a platform selected then just strip the vmlinux.
ifeq (,$(image-y))
image-y := vmlinux.strip

View File

@ -6,6 +6,7 @@ debian/ia64-hardcode-arch-script-output.patch
debian/mips-disable-werror.patch
debian/arch-sh4-fix-uimage-build.patch
debian/powerpcspe-omit-uimage.patch
debian/ppc64el-disable-zImage.patch
features/all/Kbuild-kconfig-Verbose-version-of-listnewconfig.patch
# Fixes/improvements to firmware loading
@ -57,6 +58,7 @@ bugfix/arm/omap-musb-choice.patch
bugfix/mips/disable-advansys.patch
bugfix/arm/ixp4xx_iobe.patch
bugfix/m68k/ethernat-kconfig.patch
bugfix/powerpc/ppc64el-powernv-calls-to-support-little-endian.patch
# Miscellaneous bug fixes
bugfix/all/misc-bmp085-Enable-building-as-a-module.patch
@ -94,3 +96,7 @@ features/arm/ARM-dts-sun7i-Add-reg_vcc3v3-to-sun7i-board-mmc-node.patch
features/arm/ARM-dts-sun7i-cubietruck-set-mmc3-bus-width-property.patch
features/arm/ARM-dts-imx6qdl-wandboard-Add-HDMI-support.patch
features/arm/ARM-imx-add-HDMI-support-for-SolidRun-HummingBoard-a.patch
bugfix/all/auditsc-audit_krule-mask-accesses-need-bounds-checki.patch
bugfix/all/fs-userns-change-inode_capable-to-capable_wrt_inode_uidgid.patch
bugfix/all/PCI-MSI-Fix-memory-leak-in-free_msi_irqs.patch

View File

@ -23,7 +23,7 @@ grep_model() {
parisc|parisc64)
egrep '^(model|[hs]version)\b' /proc/cpuinfo
;;
ppc|ppc64)
ppc|ppc64|ppc64le)
egrep -i '^(board|machine|model|motherboard|platform|revision|vendor)\b' /proc/cpuinfo
;;
s390|s390x)