Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc
authorLinus Torvalds <torvalds@linux-foundation.org>
Wed, 28 Mar 2012 21:41:36 +0000 (14:41 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Wed, 28 Mar 2012 21:41:36 +0000 (14:41 -0700)
Pull a few more things for powerpc by Benjamin Herrenschmidt:
 - Anton's did some recent improvements to EPOW event reporting on
   pSeries (power supply failures and such).  The patches are self
   contained enough and replace really nasty code so I felt it should
   still go in
 - I did the vio driver registration change Greg requested, I don't see
   the point of leaving that til the next merge window
 - The remaining EEH changes I said were still pending to get rid of the
   EEH references from the generic struct device_node
 - A few more iSeries removal bits
 - A perf bug fix on 970

* 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc:
  powerpc/perf: Fix instruction address sampling on 970 and Power4
  powerpc+sparc/vio: Modernize driver registration
  powerpc: Random little legacy iSeries removal tidy ups
  powerpc: Remove NO_IRQ_IGNORE
  powerpc/pseries: Cut down on enthusiastic use of defines in RAS code
  powerpc/pseries: Clean up ras_error_interrupt code
  powerpc/pseries: Remove RTAS_POWERMGM_EVENTS
  powerpc/pseries: Use rtas_get_sensor in RAS code
  powerpc/pseries: Parse and handle EPOW interrupts
  powerpc: Make function that parses RTAS error logs global
  powerpc/eeh: Retrieve PHB from global list
  powerpc/eeh: Remove eeh information from pci_dn
  powerpc/eeh: Remove eeh device from OF node

1  2 
arch/powerpc/include/asm/mmu-hash64.h
include/linux/of.h

index 0759dd8bf5aac05bcc2f8d88d6d8cc07a0627968,e06794ac8d27d443b3f6628c2f01652dfd696c26..1c65a59881eae6ad5fc237b12f424d47a0caddca
@@@ -108,11 -108,11 +108,11 @@@ extern char initial_stab[]
  #define HPTE_V_VRMA_MASK      ASM_CONST(0x4001ffffff000000)
  
  /* Values for PP (assumes Ks=0, Kp=1) */
 -/* pp0 will always be 0 for linux     */
  #define PP_RWXX       0       /* Supervisor read/write, User none */
  #define PP_RWRX 1     /* Supervisor read/write, User read */
  #define PP_RWRW 2     /* Supervisor read/write, User read/write */
  #define PP_RXRX 3     /* Supervisor read,       User read */
 +#define PP_RXXX       (HPTE_R_PP0 | 2)        /* Supervisor read, user none */
  
  #ifndef __ASSEMBLY__
  
@@@ -267,7 -267,6 +267,6 @@@ extern void demote_segment_4k(struct mm
  
  extern void hpte_init_native(void);
  extern void hpte_init_lpar(void);
- extern void hpte_init_iSeries(void);
  extern void hpte_init_beat(void);
  extern void hpte_init_beat_v3(void);
  
@@@ -325,9 -324,6 +324,6 @@@ extern void slb_set_size(u16 size)
   * WARNING - If you change these you must make sure the asm
   * implementations in slb_allocate (slb_low.S), do_stab_bolted
   * (head.S) and ASM_VSID_SCRAMBLE (below) are changed accordingly.
-  *
-  * You'll also need to change the precomputed VSID values in head.S
-  * which are used by the iSeries firmware.
   */
  
  #define VSID_MULTIPLIER_256M  ASM_CONST(200730139)    /* 28-bit prime */
@@@ -484,14 -480,6 +480,6 @@@ static inline unsigned long get_vsid(un
                             | (ea >> SID_SHIFT_1T), 1T);
  }
  
- /*
-  * This is only used on legacy iSeries in lparmap.c,
-  * hence the 256MB segment assumption.
-  */
- #define VSID_SCRAMBLE(pvsid)  (((pvsid) * VSID_MULTIPLIER_256M) %     \
-                                VSID_MODULUS_256M)
- #define KERNEL_VSID(ea)               VSID_SCRAMBLE(GET_ESID(ea))
  #endif /* __ASSEMBLY__ */
  
  #endif /* _ASM_POWERPC_MMU_HASH64_H_ */
diff --combined include/linux/of.h
index ba5d8494f2e1835277a794706b6a6519805a7ca3,f02d8b2f799d114c21455b9cdd5d4561fe69463b..fa7fb1d974589e001a637d0777cd4e856922d68b
@@@ -58,9 -58,6 +58,6 @@@ struct device_node 
        struct  kref kref;
        unsigned long _flags;
        void    *data;
- #if defined(CONFIG_EEH)
-       struct eeh_dev *edev;
- #endif
  #if defined(CONFIG_SPARC)
        char    *path_component_name;
        unsigned int unique_id;
@@@ -75,13 -72,6 +72,6 @@@ struct of_phandle_args 
        uint32_t args[MAX_PHANDLE_ARGS];
  };
  
- #if defined(CONFIG_EEH)
- static inline struct eeh_dev *of_node_to_eeh_dev(struct device_node *dn)
- {
-       return dn->edev;
- }
- #endif
  #ifdef CONFIG_OF_DYNAMIC
  extern struct device_node *of_node_get(struct device_node *node);
  extern void of_node_put(struct device_node *node);
@@@ -361,22 -351,6 +351,22 @@@ static inline int of_machine_is_compati
  #define of_match_node(_matches, _node)        NULL
  #endif /* CONFIG_OF */
  
 +/**
 + * of_property_read_bool - Findfrom a property
 + * @np:               device node from which the property value is to be read.
 + * @propname: name of the property to be searched.
 + *
 + * Search for a property in a device node.
 + * Returns true if the property exist false otherwise.
 + */
 +static inline bool of_property_read_bool(const struct device_node *np,
 +                                       const char *propname)
 +{
 +      struct property *prop = of_find_property(np, propname, NULL);
 +
 +      return prop ? true : false;
 +}
 +
  static inline int of_property_read_u32(const struct device_node *np,
                                       const char *propname,
                                       u32 *out_value)