diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2018-05-04 00:31:19 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2018-05-04 00:31:19 -0400 |
commit | bb609316d406c6e4dc29e0219d40e70837f70f8a (patch) | |
tree | 7b1955617328df941a4afd517594c062bcf44812 /arch/parisc/kernel | |
parent | c15f6d8d47152762a2819173599ce0eb135297f1 (diff) | |
parent | 8d73b18079613baf75019a920ce6a1ac0dac8b5b (diff) |
Merge branch 'parisc-4.17-4' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux
Pull parisc fixes from Helge Deller:
"Fix two section mismatches, convert to read_persistent_clock64(), add
further documentation regarding the HPMC crash handler and make
bzImage the default build target"
* 'parisc-4.17-4' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux:
parisc: Fix section mismatches
parisc: drivers.c: Fix section mismatches
parisc: time: Convert read_persistent_clock() to read_persistent_clock64()
parisc: Document rules regarding checksum of HPMC handler
parisc: Make bzImage default build target
Diffstat (limited to 'arch/parisc/kernel')
-rw-r--r-- | arch/parisc/kernel/drivers.c | 7 | ||||
-rw-r--r-- | arch/parisc/kernel/pci.c | 2 | ||||
-rw-r--r-- | arch/parisc/kernel/time.c | 2 | ||||
-rw-r--r-- | arch/parisc/kernel/traps.c | 11 |
4 files changed, 17 insertions, 5 deletions
diff --git a/arch/parisc/kernel/drivers.c b/arch/parisc/kernel/drivers.c index 3b8507f71050..ee5a78a151a6 100644 --- a/arch/parisc/kernel/drivers.c +++ b/arch/parisc/kernel/drivers.c | |||
@@ -448,7 +448,8 @@ static int match_by_id(struct device * dev, void * data) | |||
448 | * Checks all the children of @parent for a matching @id. If none | 448 | * Checks all the children of @parent for a matching @id. If none |
449 | * found, it allocates a new device and returns it. | 449 | * found, it allocates a new device and returns it. |
450 | */ | 450 | */ |
451 | static struct parisc_device * alloc_tree_node(struct device *parent, char id) | 451 | static struct parisc_device * __init alloc_tree_node( |
452 | struct device *parent, char id) | ||
452 | { | 453 | { |
453 | struct match_id_data d = { | 454 | struct match_id_data d = { |
454 | .id = id, | 455 | .id = id, |
@@ -825,8 +826,8 @@ static void walk_lower_bus(struct parisc_device *dev) | |||
825 | * devices which are not physically connected (such as extra serial & | 826 | * devices which are not physically connected (such as extra serial & |
826 | * keyboard ports). This problem is not yet solved. | 827 | * keyboard ports). This problem is not yet solved. |
827 | */ | 828 | */ |
828 | static void walk_native_bus(unsigned long io_io_low, unsigned long io_io_high, | 829 | static void __init walk_native_bus(unsigned long io_io_low, |
829 | struct device *parent) | 830 | unsigned long io_io_high, struct device *parent) |
830 | { | 831 | { |
831 | int i, devices_found = 0; | 832 | int i, devices_found = 0; |
832 | unsigned long hpa = io_io_low; | 833 | unsigned long hpa = io_io_low; |
diff --git a/arch/parisc/kernel/pci.c b/arch/parisc/kernel/pci.c index 13ee3569959a..ae684ac6efb6 100644 --- a/arch/parisc/kernel/pci.c +++ b/arch/parisc/kernel/pci.c | |||
@@ -174,7 +174,7 @@ void pcibios_set_master(struct pci_dev *dev) | |||
174 | * pcibios_init_bridge() initializes cache line and default latency | 174 | * pcibios_init_bridge() initializes cache line and default latency |
175 | * for pci controllers and pci-pci bridges | 175 | * for pci controllers and pci-pci bridges |
176 | */ | 176 | */ |
177 | void __init pcibios_init_bridge(struct pci_dev *dev) | 177 | void __ref pcibios_init_bridge(struct pci_dev *dev) |
178 | { | 178 | { |
179 | unsigned short bridge_ctl, bridge_ctl_new; | 179 | unsigned short bridge_ctl, bridge_ctl_new; |
180 | 180 | ||
diff --git a/arch/parisc/kernel/time.c b/arch/parisc/kernel/time.c index c3830400ca28..a1e772f909cb 100644 --- a/arch/parisc/kernel/time.c +++ b/arch/parisc/kernel/time.c | |||
@@ -205,7 +205,7 @@ static int __init rtc_init(void) | |||
205 | device_initcall(rtc_init); | 205 | device_initcall(rtc_init); |
206 | #endif | 206 | #endif |
207 | 207 | ||
208 | void read_persistent_clock(struct timespec *ts) | 208 | void read_persistent_clock64(struct timespec64 *ts) |
209 | { | 209 | { |
210 | static struct pdc_tod tod_data; | 210 | static struct pdc_tod tod_data; |
211 | if (pdc_tod_read(&tod_data) == 0) { | 211 | if (pdc_tod_read(&tod_data) == 0) { |
diff --git a/arch/parisc/kernel/traps.c b/arch/parisc/kernel/traps.c index 68e671a11987..71d31274d782 100644 --- a/arch/parisc/kernel/traps.c +++ b/arch/parisc/kernel/traps.c | |||
@@ -837,6 +837,17 @@ void __init initialize_ivt(const void *iva) | |||
837 | if (pdc_instr(&instr) == PDC_OK) | 837 | if (pdc_instr(&instr) == PDC_OK) |
838 | ivap[0] = instr; | 838 | ivap[0] = instr; |
839 | 839 | ||
840 | /* | ||
841 | * Rules for the checksum of the HPMC handler: | ||
842 | * 1. The IVA does not point to PDC/PDH space (ie: the OS has installed | ||
843 | * its own IVA). | ||
844 | * 2. The word at IVA + 32 is nonzero. | ||
845 | * 3. If Length (IVA + 60) is not zero, then Length (IVA + 60) and | ||
846 | * Address (IVA + 56) are word-aligned. | ||
847 | * 4. The checksum of the 8 words starting at IVA + 32 plus the sum of | ||
848 | * the Length/4 words starting at Address is zero. | ||
849 | */ | ||
850 | |||
840 | /* Compute Checksum for HPMC handler */ | 851 | /* Compute Checksum for HPMC handler */ |
841 | length = os_hpmc_size; | 852 | length = os_hpmc_size; |
842 | ivap[7] = length; | 853 | ivap[7] = length; |