parent
630fce8590
commit
39c0607f64
@ -0,0 +1 @@
|
||||
# Calculate append=skip merge(sys-kernel/calculate-sources)>=4.5&&merge(sys-kernel/calculate-sources)<4.6&&pkg(sys-apps/calculate-utils)>=3.3.0.16
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,94 @@
|
||||
# Calculate format=diff
|
||||
After rename file dentry still holds reference to lower dentry from
|
||||
previous location. This doesn't matter for data access because data
|
||||
cames from upper dentry. But this stale lower dentry taints dentry
|
||||
at new location and turns it into non-pure upper. Such file leaves
|
||||
visible whiteout entry after remove in directory which shouldn't
|
||||
have whiteouts at all.
|
||||
|
||||
Overlayfs already tracks pureness of file location in oe->opaque.
|
||||
This patch just uses that for detecting actual path type.
|
||||
|
||||
Comment from Vivek Goyal's patch:
|
||||
|
||||
Here are the details of the problem. Do following.
|
||||
|
||||
$ mkdir upper lower work merged upper/dir/
|
||||
$ touch lower/test
|
||||
$ sudo mount -t overlay overlay -olowerdir=lower,upperdir=upper,workdir=work
|
||||
merged
|
||||
$ mv merged/test merged/dir/
|
||||
$ rm merged/dir/test
|
||||
$ ls -l merged/dir/
|
||||
/usr/bin/ls: cannot access merged/dir/test: No such file or directory
|
||||
total 0
|
||||
c????????? ? ? ? ? ? test
|
||||
Basic problem seems to be that once a file has been unlinked, a
|
||||
whiteout has been left behind which was not needed and hence it becomes
|
||||
visible.
|
||||
|
||||
whiteout is visible because parent dir is of not type MERGE, hence
|
||||
od->is_real is set during ovl_dir_open(). And that means ovl_iterate()
|
||||
passes on iterate handling directly to underlying fs. Underlying fs does
|
||||
not know/filter whiteouts so it becomes visible to user.
|
||||
|
||||
Why did we leave a whiteout to begin with when we should not have.
|
||||
ovl_do_remove() checks for OVL_TYPE_PURE_UPPER() and does not leave
|
||||
whiteout if file is pure upper. In this case file is not found to be
|
||||
pure upper hence whiteout is left.
|
||||
|
||||
So why file was not PURE_UPPER in this case? I think because dentry is
|
||||
still carrying some leftover state which was valid before rename. For example,
|
||||
od->numlower was set to 1 as it was a lower file. After rename, this state
|
||||
is not valid anymore as there is no such file in lower.
|
||||
|
||||
Signed-off-by: Konstantin Khlebnikov <koct9i@gmail.com>
|
||||
Reported-by: Viktor Stanchev <me@viktorstanchev.com>
|
||||
Diagnosed-by: Vivek Goyal <vgoyal@redhat.com>
|
||||
Link: https://bugzilla.kernel.org/show_bug.cgi?id=109611
|
||||
---
|
||||
fs/overlayfs/dir.c | 7 +++++++
|
||||
fs/overlayfs/super.c | 12 +++++++-----
|
||||
2 files changed, 14 insertions(+), 5 deletions(-)
|
||||
diff --git a/fs/overlayfs/dir.c b/fs/overlayfs/dir.c
|
||||
index ed95272d57a6..edf83f325bca 100644
|
||||
--- a/fs/overlayfs/dir.c
|
||||
+++ b/fs/overlayfs/dir.c
|
||||
@@ -903,6 +903,13 @@ static int ovl_rename2(struct inode *olddir, struct dentry *old,
|
||||
if (!overwrite && new_is_dir && !old_opaque && new_opaque)
|
||||
ovl_remove_opaque(newdentry);
|
||||
|
||||
+ /*
|
||||
+ * Old dentry now lives in different location. Dentries in
|
||||
+ * lowerstack are stale. We cannot drop them here because
|
||||
+ * access to them is lockless. This could be only pure upper
|
||||
+ * or opaque directory - numlower is zero. Or upper non-dir
|
||||
+ * entry - its pureness is tracked by flag opaque.
|
||||
+ */
|
||||
if (old_opaque != new_opaque) {
|
||||
ovl_dentry_set_opaque(old, new_opaque);
|
||||
if (!overwrite)
|
||||
diff --git a/fs/overlayfs/super.c b/fs/overlayfs/super.c
|
||||
index 8d826bd56b26..ba28b007005e 100644
|
||||
--- a/fs/overlayfs/super.c
|
||||
+++ b/fs/overlayfs/super.c
|
||||
@@ -76,12 +76,14 @@ enum ovl_path_type ovl_path_type(struct dentry *dentry)
|
||||
if (oe->__upperdentry) {
|
||||
type = __OVL_PATH_UPPER;
|
||||
|
||||
- if (oe->numlower) {
|
||||
- if (S_ISDIR(dentry->d_inode->i_mode))
|
||||
- type |= __OVL_PATH_MERGE;
|
||||
- } else if (!oe->opaque) {
|
||||
+ /*
|
||||
+ * Non-dir dentry can hold lower dentry from previous
|
||||
+ * location. Its purity depends only on opaque flag.
|
||||
+ */
|
||||
+ if (oe->numlower && S_ISDIR(dentry->d_inode->i_mode))
|
||||
+ type |= __OVL_PATH_MERGE;
|
||||
+ else if (!oe->opaque)
|
||||
type |= __OVL_PATH_PURE;
|
||||
- }
|
||||
} else {
|
||||
if (oe->numlower > 1)
|
||||
type |= __OVL_PATH_MERGE;
|
@ -0,0 +1,362 @@
|
||||
# Calculate format=kernel name=.config os_linux_system==server
|
||||
# CONFIG_CYPRESS_FIRMWARE is not set
|
||||
# CONFIG_DRM_I810 is not set
|
||||
# CONFIG_DVB_TUNER_DIB0070 is not set
|
||||
# CONFIG_DVB_TUNER_DIB0090 is not set
|
||||
# CONFIG_HZ_1000 is not set
|
||||
CONFIG_HZ=300
|
||||
CONFIG_HZ_300=y
|
||||
CONFIG_INLINE_READ_UNLOCK_IRQ=y
|
||||
CONFIG_INLINE_READ_UNLOCK=y
|
||||
CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
|
||||
CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
|
||||
CONFIG_INLINE_WRITE_UNLOCK=y
|
||||
# CONFIG_INPUT_JOYSTICK is not set
|
||||
# CONFIG_INPUT_TABLET is not set
|
||||
# CONFIG_MACINTOSH_DRIVERS is not set
|
||||
# CONFIG_MEDIA_ANALOG_TV_SUPPORT is not set
|
||||
# CONFIG_MEDIA_CAMERA_SUPPORT is not set
|
||||
# CONFIG_MEDIA_DIGITAL_TV_SUPPORT is not set
|
||||
# CONFIG_MEDIA_PCI_SUPPORT is not set
|
||||
# CONFIG_MEDIA_SDR_SUPPORT is not set
|
||||
# CONFIG_MEDIA_USB_SUPPORT is not set
|
||||
# CONFIG_PREEMPT is not set
|
||||
CONFIG_PREEMPT_NONE=y
|
||||
CONFIG_TREE_RCU=y
|
||||
# CONFIG_TTPCI_EEPROM is not set
|
||||
!CONFIG_DVB_AF9013=
|
||||
!CONFIG_DVB_AF9033=
|
||||
!CONFIG_DVB_AS102=
|
||||
!CONFIG_DVB_AS102_FE=
|
||||
!CONFIG_DVB_AU8522=
|
||||
!CONFIG_DVB_AU8522_DTV=
|
||||
!CONFIG_DVB_AU8522_V4L=
|
||||
!CONFIG_DVB_AV7110=
|
||||
!CONFIG_DVB_AV7110_IR=
|
||||
!CONFIG_DVB_AV7110_OSD=
|
||||
!CONFIG_DVB_B2C2_FLEXCOP=
|
||||
!CONFIG_DVB_B2C2_FLEXCOP_PCI=
|
||||
!CONFIG_DVB_B2C2_FLEXCOP_PCI_DEBUG=
|
||||
!CONFIG_DVB_B2C2_FLEXCOP_USB=
|
||||
!CONFIG_DVB_BCM3510=
|
||||
!CONFIG_DVB_BUDGET=
|
||||
!CONFIG_DVB_BUDGET_AV=
|
||||
!CONFIG_DVB_BUDGET_CORE=
|
||||
!CONFIG_DVB_BUDGET_PATCH=
|
||||
!CONFIG_DVB_CORE=
|
||||
!CONFIG_DVB_CX24116=
|
||||
!CONFIG_DVB_CX24120=
|
||||
!CONFIG_DVB_CX24123=
|
||||
!CONFIG_DVB_CXD2820R=
|
||||
!CONFIG_DVB_DDBRIDGE=
|
||||
!CONFIG_DVB_DRXK=
|
||||
!CONFIG_DVB_DYNAMIC_MINORS=
|
||||
!CONFIG_DVB_EC100=
|
||||
!CONFIG_DVB_FIREDTV=
|
||||
!CONFIG_DVB_ISL6405=
|
||||
!CONFIG_DVB_ISL6421=
|
||||
!CONFIG_DVB_ISL6423=
|
||||
!CONFIG_DVB_L64781=
|
||||
!CONFIG_DVB_LG2160=
|
||||
!CONFIG_DVB_LGDT3305=
|
||||
!CONFIG_DVB_LGDT330X=
|
||||
!CONFIG_DVB_LNBP21=
|
||||
!CONFIG_DVB_M88DS3103=
|
||||
!CONFIG_DVB_MAX_ADAPTERS=
|
||||
!CONFIG_DVB_MT312=
|
||||
!CONFIG_DVB_MT352=
|
||||
!CONFIG_DVB_NET=
|
||||
!CONFIG_DVB_NGENE=
|
||||
!CONFIG_DVB_NXT200X=
|
||||
!CONFIG_DVB_PLATFORM_DRIVERS=
|
||||
!CONFIG_DVB_PLL=
|
||||
!CONFIG_DVB_PLUTO2=
|
||||
!CONFIG_DVB_PT1=
|
||||
!CONFIG_DVB_PT3=
|
||||
!CONFIG_DVB_RTL2830=
|
||||
!CONFIG_DVB_RTL2832=
|
||||
!CONFIG_DVB_RTL2832_SDR=
|
||||
!CONFIG_DVB_S5H1409=
|
||||
!CONFIG_DVB_S5H1411=
|
||||
!CONFIG_DVB_S5H1420=
|
||||
!CONFIG_DVB_SI2168=
|
||||
!CONFIG_DVB_SP2=
|
||||
!CONFIG_DVB_SP8870=
|
||||
!CONFIG_DVB_STB0899=
|
||||
!CONFIG_DVB_STV0297=
|
||||
!CONFIG_DVB_STV0299=
|
||||
!CONFIG_DVB_STV0900=
|
||||
!CONFIG_DVB_STV090x=
|
||||
!CONFIG_DVB_STV6110=
|
||||
!CONFIG_DVB_STV6110x=
|
||||
!CONFIG_DVB_TC90522=
|
||||
!CONFIG_DVB_TDA10021=
|
||||
!CONFIG_DVB_TDA10023=
|
||||
!CONFIG_DVB_TDA10048=
|
||||
!CONFIG_DVB_TDA1004X=
|
||||
!CONFIG_DVB_TDA10086=
|
||||
!CONFIG_DVB_TDA18271C2DD=
|
||||
!CONFIG_DVB_TDA8083=
|
||||
!CONFIG_DVB_TDA8261=
|
||||
!CONFIG_DVB_TDA826X=
|
||||
!CONFIG_DVB_TS2020=
|
||||
!CONFIG_DVB_TTUSB_BUDGET=
|
||||
!CONFIG_DVB_TTUSB_DEC=
|
||||
!CONFIG_DVB_TUA6100=
|
||||
!CONFIG_DVB_TUNER_CX24113=
|
||||
!CONFIG_DVB_TUNER_ITD1000=
|
||||
!CONFIG_DVB_USB_AF9015=
|
||||
!CONFIG_DVB_USB_AF9035=
|
||||
!CONFIG_DVB_USB_ANYSEE=
|
||||
!CONFIG_DVB_USB_AU6610=
|
||||
!CONFIG_DVB_USB_AZ6007=
|
||||
!CONFIG_DVB_USB_CE6230=
|
||||
!CONFIG_DVB_USB_DVBSKY=
|
||||
!CONFIG_DVB_USB_EC168=
|
||||
!CONFIG_DVB_USB_GL861=
|
||||
!CONFIG_DVB_USB_MXL111SF=
|
||||
!CONFIG_DVB_USB_RTL28XXU=
|
||||
!CONFIG_DVB_USB_V2=
|
||||
!CONFIG_DVB_VES1820=
|
||||
!CONFIG_DVB_VES1X93=
|
||||
!CONFIG_DVB_ZL10036=
|
||||
!CONFIG_DVB_ZL10039=
|
||||
!CONFIG_DVB_ZL10353=
|
||||
!CONFIG_FRAME_VECTOR=
|
||||
!CONFIG_JOYSTICK_A3D=
|
||||
!CONFIG_JOYSTICK_ADI=
|
||||
!CONFIG_JOYSTICK_ANALOG=
|
||||
!CONFIG_JOYSTICK_AS5011=
|
||||
!CONFIG_JOYSTICK_COBRA=
|
||||
!CONFIG_JOYSTICK_DB9=
|
||||
!CONFIG_JOYSTICK_GAMECON=
|
||||
!CONFIG_JOYSTICK_GF2K=
|
||||
!CONFIG_JOYSTICK_GRIP=
|
||||
!CONFIG_JOYSTICK_GRIP_MP=
|
||||
!CONFIG_JOYSTICK_GUILLEMOT=
|
||||
!CONFIG_JOYSTICK_IFORCE=
|
||||
!CONFIG_JOYSTICK_IFORCE_232=
|
||||
!CONFIG_JOYSTICK_IFORCE_USB=
|
||||
!CONFIG_JOYSTICK_INTERACT=
|
||||
!CONFIG_JOYSTICK_JOYDUMP=
|
||||
!CONFIG_JOYSTICK_MAGELLAN=
|
||||
!CONFIG_JOYSTICK_SIDEWINDER=
|
||||
!CONFIG_JOYSTICK_SPACEBALL=
|
||||
!CONFIG_JOYSTICK_SPACEORB=
|
||||
!CONFIG_JOYSTICK_STINGER=
|
||||
!CONFIG_JOYSTICK_TMDC=
|
||||
!CONFIG_JOYSTICK_TURBOGRAFX=
|
||||
!CONFIG_JOYSTICK_TWIDJOY=
|
||||
!CONFIG_JOYSTICK_WALKERA0701=
|
||||
!CONFIG_JOYSTICK_WARRIOR=
|
||||
!CONFIG_JOYSTICK_XPAD=
|
||||
!CONFIG_JOYSTICK_XPAD_FF=
|
||||
!CONFIG_JOYSTICK_XPAD_LEDS=
|
||||
!CONFIG_JOYSTICK_ZHENHUA=
|
||||
!CONFIG_MAC_EMUMOUSEBTN=
|
||||
!CONFIG_MEDIA_ATTACH=
|
||||
!CONFIG_MEDIA_COMMON_OPTIONS=
|
||||
!CONFIG_MEDIA_CONTROLLER=
|
||||
!CONFIG_MEDIA_SUBDRV_AUTOSELECT=
|
||||
!CONFIG_MEDIA_TUNER=
|
||||
!CONFIG_MEDIA_TUNER_E4000=
|
||||
!CONFIG_MEDIA_TUNER_FC0011=
|
||||
!CONFIG_MEDIA_TUNER_FC0012=
|
||||
!CONFIG_MEDIA_TUNER_FC0013=
|
||||
!CONFIG_MEDIA_TUNER_FC2580=
|
||||
!CONFIG_MEDIA_TUNER_IT913X=
|
||||
!CONFIG_MEDIA_TUNER_MC44S803=
|
||||
!CONFIG_MEDIA_TUNER_MT2060=
|
||||
!CONFIG_MEDIA_TUNER_MT2063=
|
||||
!CONFIG_MEDIA_TUNER_MT20XX=
|
||||
!CONFIG_MEDIA_TUNER_MT2131=
|
||||
!CONFIG_MEDIA_TUNER_MXL301RF=
|
||||
!CONFIG_MEDIA_TUNER_MXL5005S=
|
||||
!CONFIG_MEDIA_TUNER_MXL5007T=
|
||||
!CONFIG_MEDIA_TUNER_QM1D1C0042=
|
||||
!CONFIG_MEDIA_TUNER_QT1010=
|
||||
!CONFIG_MEDIA_TUNER_R820T=
|
||||
!CONFIG_MEDIA_TUNER_SI2157=
|
||||
!CONFIG_MEDIA_TUNER_SIMPLE=
|
||||
!CONFIG_MEDIA_TUNER_TDA18212=
|
||||
!CONFIG_MEDIA_TUNER_TDA18218=
|
||||
!CONFIG_MEDIA_TUNER_TDA18271=
|
||||
!CONFIG_MEDIA_TUNER_TDA827X=
|
||||
!CONFIG_MEDIA_TUNER_TDA8290=
|
||||
!CONFIG_MEDIA_TUNER_TDA9887=
|
||||
!CONFIG_MEDIA_TUNER_TUA9001=
|
||||
!CONFIG_MEDIA_TUNER_XC2028=
|
||||
!CONFIG_MEDIA_TUNER_XC4000=
|
||||
!CONFIG_MEDIA_TUNER_XC5000=
|
||||
!CONFIG_PREEMPT_COUNT=
|
||||
!CONFIG_PREEMPT_RCU=
|
||||
!CONFIG_SMS_SDIO_DRV=
|
||||
!CONFIG_SMS_SIANO_MDTV=
|
||||
!CONFIG_SMS_USB_DRV=
|
||||
!CONFIG_TABLET_SERIAL_WACOM4=
|
||||
!CONFIG_TABLET_USB_ACECAD=
|
||||
!CONFIG_TABLET_USB_AIPTEK=
|
||||
!CONFIG_TABLET_USB_GTCO=
|
||||
!CONFIG_TABLET_USB_HANWANG=
|
||||
!CONFIG_TABLET_USB_KBTAB=
|
||||
!CONFIG_UNINLINE_SPIN_UNLOCK=
|
||||
!CONFIG_USB_AIRSPY=
|
||||
!CONFIG_USB_CONFIGFS_F_UVC=
|
||||
!CONFIG_USB_GL860=
|
||||
!CONFIG_USB_GSPCA=
|
||||
!CONFIG_USB_GSPCA_BENQ=
|
||||
!CONFIG_USB_GSPCA_CONEX=
|
||||
!CONFIG_USB_GSPCA_CPIA1=
|
||||
!CONFIG_USB_GSPCA_DTCS033=
|
||||
!CONFIG_USB_GSPCA_ETOMS=
|
||||
!CONFIG_USB_GSPCA_FINEPIX=
|
||||
!CONFIG_USB_GSPCA_JEILINJ=
|
||||
!CONFIG_USB_GSPCA_JL2005BCD=
|
||||
!CONFIG_USB_GSPCA_KINECT=
|
||||
!CONFIG_USB_GSPCA_KONICA=
|
||||
!CONFIG_USB_GSPCA_MARS=
|
||||
!CONFIG_USB_GSPCA_MR97310A=
|
||||
!CONFIG_USB_GSPCA_NW80X=
|
||||
!CONFIG_USB_GSPCA_OV519=
|
||||
!CONFIG_USB_GSPCA_OV534=
|
||||
!CONFIG_USB_GSPCA_OV534_9=
|
||||
!CONFIG_USB_GSPCA_PAC207=
|
||||
!CONFIG_USB_GSPCA_PAC7302=
|
||||
!CONFIG_USB_GSPCA_PAC7311=
|
||||
!CONFIG_USB_GSPCA_SE401=
|
||||
!CONFIG_USB_GSPCA_SN9C2028=
|
||||
!CONFIG_USB_GSPCA_SN9C20X=
|
||||
!CONFIG_USB_GSPCA_SONIXB=
|
||||
!CONFIG_USB_GSPCA_SONIXJ=
|
||||
!CONFIG_USB_GSPCA_SPCA1528=
|
||||
!CONFIG_USB_GSPCA_SPCA500=
|
||||
!CONFIG_USB_GSPCA_SPCA501=
|
||||
!CONFIG_USB_GSPCA_SPCA505=
|
||||
!CONFIG_USB_GSPCA_SPCA506=
|
||||
!CONFIG_USB_GSPCA_SPCA508=
|
||||
!CONFIG_USB_GSPCA_SPCA561=
|
||||
!CONFIG_USB_GSPCA_SQ905=
|
||||
!CONFIG_USB_GSPCA_SQ905C=
|
||||
!CONFIG_USB_GSPCA_SQ930X=
|
||||
!CONFIG_USB_GSPCA_STK014=
|
||||
!CONFIG_USB_GSPCA_STK1135=
|
||||
!CONFIG_USB_GSPCA_STV0680=
|
||||
!CONFIG_USB_GSPCA_SUNPLUS=
|
||||
!CONFIG_USB_GSPCA_T613=
|
||||
!CONFIG_USB_GSPCA_TOPRO=
|
||||
!CONFIG_USB_GSPCA_TOUPTEK=
|
||||
!CONFIG_USB_GSPCA_TV8532=
|
||||
!CONFIG_USB_GSPCA_VC032X=
|
||||
!CONFIG_USB_GSPCA_VICAM=
|
||||
!CONFIG_USB_GSPCA_XIRLINK_CIT=
|
||||
!CONFIG_USB_GSPCA_ZC3XX=
|
||||
!CONFIG_USB_HACKRF=
|
||||
!CONFIG_USB_M5602=
|
||||
!CONFIG_USB_PWC=
|
||||
!CONFIG_USB_PWC_DEBUG=
|
||||
!CONFIG_USB_PWC_INPUT_EVDEV=
|
||||
!CONFIG_USB_S2255=
|
||||
!CONFIG_USB_STKWEBCAM=
|
||||
!CONFIG_USB_STV06XX=
|
||||
!CONFIG_USB_VIDEO_CLASS=
|
||||
!CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=
|
||||
!CONFIG_USB_ZR364XX=
|
||||
!CONFIG_V4L_MEM2MEM_DRIVERS=
|
||||
!CONFIG_V4L_PLATFORM_DRIVERS=
|
||||
!CONFIG_V4L_TEST_DRIVERS=
|
||||
!CONFIG_VIDEO_ADV7170=
|
||||
!CONFIG_VIDEO_ADV7175=
|
||||
!CONFIG_VIDEO_AU0828=
|
||||
!CONFIG_VIDEO_AU0828_V4L2=
|
||||
!CONFIG_VIDEO_BT819=
|
||||
!CONFIG_VIDEO_BT856=
|
||||
!CONFIG_VIDEO_BT866=
|
||||
!CONFIG_VIDEOBUF2_CORE=
|
||||
!CONFIG_VIDEOBUF2_DMA_CONTIG=
|
||||
!CONFIG_VIDEOBUF2_DMA_SG=
|
||||
!CONFIG_VIDEOBUF2_DVB=
|
||||
!CONFIG_VIDEOBUF2_MEMOPS=
|
||||
!CONFIG_VIDEOBUF2_VMALLOC=
|
||||
!CONFIG_VIDEOBUF_DMA_SG=
|
||||
!CONFIG_VIDEOBUF_GEN=
|
||||
!CONFIG_VIDEOBUF_VMALLOC=
|
||||
!CONFIG_VIDEO_CPIA2=
|
||||
!CONFIG_VIDEO_CS53L32A=
|
||||
!CONFIG_VIDEO_CX2341X=
|
||||
!CONFIG_VIDEO_CX25821=
|
||||
!CONFIG_VIDEO_CX25821_ALSA=
|
||||
!CONFIG_VIDEO_CX25840=
|
||||
!CONFIG_VIDEO_DEV=
|
||||
!CONFIG_VIDEO_DT3155=
|
||||
!CONFIG_VIDEO_EM28XX=
|
||||
!CONFIG_VIDEO_EM28XX_ALSA=
|
||||
!CONFIG_VIDEO_EM28XX_DVB=
|
||||
!CONFIG_VIDEO_EM28XX_V4L2=
|
||||
!CONFIG_VIDEO_GO7007=
|
||||
!CONFIG_VIDEO_GO7007_LOADER=
|
||||
!CONFIG_VIDEO_GO7007_USB=
|
||||
!CONFIG_VIDEO_GO7007_USB_S2250_BOARD=
|
||||
!CONFIG_VIDEO_HDPVR=
|
||||
!CONFIG_VIDEO_HEXIUM_GEMINI=
|
||||
!CONFIG_VIDEO_HEXIUM_ORION=
|
||||
!CONFIG_VIDEO_KS0127=
|
||||
!CONFIG_VIDEO_MEYE=
|
||||
!CONFIG_VIDEO_MSP3400=
|
||||
!CONFIG_VIDEO_MT9V011=
|
||||
!CONFIG_VIDEO_MXB=
|
||||
!CONFIG_VIDEO_OV7640=
|
||||
!CONFIG_VIDEO_PVRUSB2=
|
||||
!CONFIG_VIDEO_PVRUSB2_DEBUGIFC=
|
||||
!CONFIG_VIDEO_PVRUSB2_DVB=
|
||||
!CONFIG_VIDEO_PVRUSB2_SYSFS=
|
||||
!CONFIG_VIDEO_SAA6588=
|
||||
!CONFIG_VIDEO_SAA6752HS=
|
||||
!CONFIG_VIDEO_SAA7110=
|
||||
!CONFIG_VIDEO_SAA711X=
|
||||
!CONFIG_VIDEO_SAA7134=
|
||||
!CONFIG_VIDEO_SAA7134_ALSA=
|
||||
!CONFIG_VIDEO_SAA7134_DVB=
|
||||
!CONFIG_VIDEO_SAA7134_GO7007=
|
||||
!CONFIG_VIDEO_SAA7146=
|
||||
!CONFIG_VIDEO_SAA7146_VV=
|
||||
!CONFIG_VIDEO_SAA7164=
|
||||
!CONFIG_VIDEO_SAA7185=
|
||||
!CONFIG_VIDEO_SOLO6X10=
|
||||
!CONFIG_VIDEO_SONY_BTF_MPX=
|
||||
!CONFIG_VIDEO_STK1160=
|
||||
!CONFIG_VIDEO_STK1160_AC97=
|
||||
!CONFIG_VIDEO_STK1160_COMMON=
|
||||
!CONFIG_VIDEO_TDA9840=
|
||||
!CONFIG_VIDEO_TEA6415C=
|
||||
!CONFIG_VIDEO_TEA6420=
|
||||
!CONFIG_VIDEO_TUNER=
|
||||
!CONFIG_VIDEO_TVEEPROM=
|
||||
!CONFIG_VIDEO_TVP5150=
|
||||
!CONFIG_VIDEO_TW2804=
|
||||
!CONFIG_VIDEO_TW68=
|
||||
!CONFIG_VIDEO_TW9903=
|
||||
!CONFIG_VIDEO_TW9906=
|
||||
!CONFIG_VIDEO_UDA1342=
|
||||
!CONFIG_VIDEO_USBTV=
|
||||
!CONFIG_VIDEO_USBVISION=
|
||||
!CONFIG_VIDEO_V4L2=
|
||||
!CONFIG_VIDEO_VPX3220=
|
||||
!CONFIG_VIDEO_WM8775=
|
||||
!CONFIG_VIDEO_ZORAN=
|
||||
!CONFIG_VIDEO_ZORAN_AVS6EYES=
|
||||
!CONFIG_VIDEO_ZORAN_BUZ=
|
||||
!CONFIG_VIDEO_ZORAN_DC10=
|
||||
!CONFIG_VIDEO_ZORAN_DC30=
|
||||
!CONFIG_VIDEO_ZORAN_LML33=
|
||||
!CONFIG_VIDEO_ZORAN_LML33R10=
|
||||
!CONFIG_VIDEO_ZORAN_ZR36060=
|
||||
!CONFIG_DVB_A8293=
|
||||
!CONFIG_DVB_B2C2_FLEXCOP_USB_DEBUG=
|
||||
!CONFIG_DVB_CX22700=
|
||||
!CONFIG_DVB_DRX39XYJ=
|
||||
!CONFIG_DVB_DRXD=
|
||||
!CONFIG_DVB_MB86A20S=
|
||||
!CONFIG_DVB_S921=
|
||||
!CONFIG_DVB_TDA10071=
|
||||
!CONFIG_SMS_SIANO_DEBUGFS=
|
||||
!CONFIG_USB_G_WEBCAM=
|
@ -0,0 +1,388 @@
|
||||
# Calculate format=diff pkg(sys-devel/gcc)>=4.9
|
||||
WARNING - this version of the patch works with version 4.9+ of gcc and with
|
||||
kernel version 3.15.x+ and should NOT be applied when compiling on older
|
||||
versions due to name changes of the flags with the 4.9 release of gcc.
|
||||
Use the older version of this patch hosted on the same github for older
|
||||
versions of gcc. For example:
|
||||
|
||||
corei7 --> nehalem
|
||||
corei7-avx --> sandybridge
|
||||
core-avx-i --> ivybridge
|
||||
core-avx2 --> haswell
|
||||
|
||||
For more, see: https://gcc.gnu.org/gcc-4.9/changes.html
|
||||
|
||||
It also changes 'atom' to 'bonnell' in accordance with the gcc v4.9 changes.
|
||||
Note that upstream is using the deprecated 'match=atom' flags when I believe it
|
||||
should use the newer 'march=bonnell' flag for atom processors.
|
||||
|
||||
I have made that change to this patch set as well. See the following kernel
|
||||
bug report to see if I'm right: https://bugzilla.kernel.org/show_bug.cgi?id=77461
|
||||
|
||||
This patch will expand the number of microarchitectures to include new
|
||||
processors including: AMD K10-family, AMD Family 10h (Barcelona), AMD Family
|
||||
14h (Bobcat), AMD Family 15h (Bulldozer), AMD Family 15h (Piledriver), AMD
|
||||
Family 16h (Jaguar), Intel 1st Gen Core i3/i5/i7 (Nehalem), Intel 1.5 Gen Core
|
||||
i3/i5/i7 (Westmere), Intel 2nd Gen Core i3/i5/i7 (Sandybridge), Intel 3rd Gen
|
||||
Core i3/i5/i7 (Ivybridge), Intel 4th Gen Core i3/i5/i7 (Haswell), and Intel 5th
|
||||
Gen Core i3/i5/i7 (Broadwell). It also offers the compiler the 'native' flag.
|
||||
|
||||
Small but real speed increases are measurable using a make endpoint comparing
|
||||
a generic kernel to one built with one of the respective microarchs.
|
||||
|
||||
See the following experimental evidence supporting this statement:
|
||||
https://github.com/graysky2/kernel_gcc_patch
|
||||
|
||||
REQUIREMENTS
|
||||
linux version >=3.15
|
||||
gcc version >=4.9
|
||||
|
||||
--- a/arch/x86/include/asm/module.h 2014-08-03 18:25:02.000000000 -0400
|
||||
+++ b/arch/x86/include/asm/module.h 2014-09-13 09:37:16.721385247 -0400
|
||||
@@ -15,6 +15,20 @@
|
||||
#define MODULE_PROC_FAMILY "586MMX "
|
||||
#elif defined CONFIG_MCORE2
|
||||
#define MODULE_PROC_FAMILY "CORE2 "
|
||||
+#elif defined CONFIG_MNATIVE
|
||||
+#define MODULE_PROC_FAMILY "NATIVE "
|
||||
+#elif defined CONFIG_MNEHALEM
|
||||
+#define MODULE_PROC_FAMILY "NEHALEM "
|
||||
+#elif defined CONFIG_MWESTMERE
|
||||
+#define MODULE_PROC_FAMILY "WESTMERE "
|
||||
+#elif defined CONFIG_MSANDYBRIDGE
|
||||
+#define MODULE_PROC_FAMILY "SANDYBRIDGE "
|
||||
+#elif defined CONFIG_MIVYBRIDGE
|
||||
+#define MODULE_PROC_FAMILY "IVYBRIDGE "
|
||||
+#elif defined CONFIG_MHASWELL
|
||||
+#define MODULE_PROC_FAMILY "HASWELL "
|
||||
+#elif defined CONFIG_MBROADWELL
|
||||
+#define MODULE_PROC_FAMILY "BROADWELL "
|
||||
#elif defined CONFIG_MATOM
|
||||
#define MODULE_PROC_FAMILY "ATOM "
|
||||
#elif defined CONFIG_M686
|
||||
@@ -33,6 +47,20 @@
|
||||
#define MODULE_PROC_FAMILY "K7 "
|
||||
#elif defined CONFIG_MK8
|
||||
#define MODULE_PROC_FAMILY "K8 "
|
||||
+#elif defined CONFIG_MK8SSE3
|
||||
+#define MODULE_PROC_FAMILY "K8SSE3 "
|
||||
+#elif defined CONFIG_MK10
|
||||
+#define MODULE_PROC_FAMILY "K10 "
|
||||
+#elif defined CONFIG_MBARCELONA
|
||||
+#define MODULE_PROC_FAMILY "BARCELONA "
|
||||
+#elif defined CONFIG_MBOBCAT
|
||||
+#define MODULE_PROC_FAMILY "BOBCAT "
|
||||
+#elif defined CONFIG_MBULLDOZER
|
||||
+#define MODULE_PROC_FAMILY "BULLDOZER "
|
||||
+#elif defined CONFIG_MPILEDRIVER
|
||||
+#define MODULE_PROC_FAMILY "PILEDRIVER "
|
||||
+#elif defined CONFIG_MJAGUAR
|
||||
+#define MODULE_PROC_FAMILY "JAGUAR "
|
||||
#elif defined CONFIG_MELAN
|
||||
#define MODULE_PROC_FAMILY "ELAN "
|
||||
#elif defined CONFIG_MCRUSOE
|
||||
--- a/arch/x86/Kconfig.cpu 2014-08-03 18:25:02.000000000 -0400
|
||||
+++ b/arch/x86/Kconfig.cpu 2014-09-13 09:37:16.721385247 -0400
|
||||
@@ -137,9 +137,8 @@ config MPENTIUM4
|
||||
-Paxville
|
||||
-Dempsey
|
||||
|
||||
-
|
||||
config MK6
|
||||
- bool "K6/K6-II/K6-III"
|
||||
+ bool "AMD K6/K6-II/K6-III"
|
||||
depends on X86_32
|
||||
---help---
|
||||
Select this for an AMD K6-family processor. Enables use of
|
||||
@@ -147,7 +146,7 @@ config MK6
|
||||
flags to GCC.
|
||||
|
||||
config MK7
|
||||
- bool "Athlon/Duron/K7"
|
||||
+ bool "AMD Athlon/Duron/K7"
|
||||
depends on X86_32
|
||||
---help---
|
||||
Select this for an AMD Athlon K7-family processor. Enables use of
|
||||
@@ -155,12 +154,62 @@ config MK7
|
||||
flags to GCC.
|
||||
|
||||
config MK8
|
||||
- bool "Opteron/Athlon64/Hammer/K8"
|
||||
+ bool "AMD Opteron/Athlon64/Hammer/K8"
|
||||
---help---
|
||||
Select this for an AMD Opteron or Athlon64 Hammer-family processor.
|
||||
Enables use of some extended instructions, and passes appropriate
|
||||
optimization flags to GCC.
|
||||
|
||||
+config MK8SSE3
|
||||
+ bool "AMD Opteron/Athlon64/Hammer/K8 with SSE3"
|
||||
+ ---help---
|
||||
+ Select this for improved AMD Opteron or Athlon64 Hammer-family processors.
|
||||
+ Enables use of some extended instructions, and passes appropriate
|
||||
+ optimization flags to GCC.
|
||||
+
|
||||
+config MK10
|
||||
+ bool "AMD 61xx/7x50/PhenomX3/X4/II/K10"
|
||||
+ ---help---
|
||||
+ Select this for an AMD 61xx Eight-Core Magny-Cours, Athlon X2 7x50,
|
||||
+ Phenom X3/X4/II, Athlon II X2/X3/X4, or Turion II-family processor.
|
||||
+ Enables use of some extended instructions, and passes appropriate
|
||||
+ optimization flags to GCC.
|
||||
+
|
||||
+config MBARCELONA
|
||||
+ bool "AMD Barcelona"
|
||||
+ ---help---
|
||||
+ Select this for AMD Barcelona and newer processors.
|
||||
+
|
||||
+ Enables -march=barcelona
|
||||
+
|
||||
+config MBOBCAT
|
||||
+ bool "AMD Bobcat"
|
||||
+ ---help---
|
||||
+ Select this for AMD Bobcat processors.
|
||||
+
|
||||
+ Enables -march=btver1
|
||||
+
|
||||
+config MBULLDOZER
|
||||
+ bool "AMD Bulldozer"
|
||||
+ ---help---
|
||||
+ Select this for AMD Bulldozer processors.
|
||||
+
|
||||
+ Enables -march=bdver1
|
||||
+
|
||||
+config MPILEDRIVER
|
||||
+ bool "AMD Piledriver"
|
||||
+ ---help---
|
||||
+ Select this for AMD Piledriver processors.
|
||||
+
|
||||
+ Enables -march=bdver2
|
||||
+
|
||||
+config MJAGUAR
|
||||
+ bool "AMD Jaguar"
|
||||
+ ---help---
|
||||
+ Select this for AMD Jaguar processors.
|
||||
+
|
||||
+ Enables -march=btver2
|
||||
+
|
||||
config MCRUSOE
|
||||
bool "Crusoe"
|
||||
depends on X86_32
|
||||
@@ -251,8 +300,17 @@ config MPSC
|
||||
using the cpu family field
|
||||
in /proc/cpuinfo. Family 15 is an older Xeon, Family 6 a newer one.
|
||||
|
||||
+config MATOM
|
||||
+ bool "Intel Atom"
|
||||
+ ---help---
|
||||
+
|
||||
+ Select this for the Intel Atom platform. Intel Atom CPUs have an
|
||||
+ in-order pipelining architecture and thus can benefit from
|
||||
+ accordingly optimized code. Use a recent GCC with specific Atom
|
||||
+ support in order to fully benefit from selecting this option.
|
||||
+
|
||||
config MCORE2
|
||||
- bool "Core 2/newer Xeon"
|
||||
+ bool "Intel Core 2"
|
||||
---help---
|
||||
|
||||
Select this for Intel Core 2 and newer Core 2 Xeons (Xeon 51xx and
|
||||
@@ -260,14 +318,55 @@ config MCORE2
|
||||
family in /proc/cpuinfo. Newer ones have 6 and older ones 15
|
||||
(not a typo)
|
||||
|
||||
-config MATOM
|
||||
- bool "Intel Atom"
|
||||
+ Enables -march=core2
|
||||
+
|
||||
+config MNEHALEM
|
||||
+ bool "Intel Nehalem"
|
||||
---help---
|
||||
|
||||
- Select this for the Intel Atom platform. Intel Atom CPUs have an
|
||||
- in-order pipelining architecture and thus can benefit from
|
||||
- accordingly optimized code. Use a recent GCC with specific Atom
|
||||
- support in order to fully benefit from selecting this option.
|
||||
+ Select this for 1st Gen Core processors in the Nehalem family.
|
||||
+
|
||||
+ Enables -march=nehalem
|
||||
+
|
||||
+config MWESTMERE
|
||||
+ bool "Intel Westmere"
|
||||
+ ---help---
|
||||
+
|
||||
+ Select this for the Intel Westmere formerly Nehalem-C family.
|
||||
+
|
||||
+ Enables -march=westmere
|
||||
+
|
||||
+config MSANDYBRIDGE
|
||||
+ bool "Intel Sandy Bridge"
|
||||
+ ---help---
|
||||
+
|
||||
+ Select this for 2nd Gen Core processors in the Sandy Bridge family.
|
||||
+
|
||||
+ Enables -march=sandybridge
|
||||
+
|
||||
+config MIVYBRIDGE
|
||||
+ bool "Intel Ivy Bridge"
|
||||
+ ---help---
|
||||
+
|
||||
+ Select this for 3rd Gen Core processors in the Ivy Bridge family.
|
||||
+
|
||||
+ Enables -march=ivybridge
|
||||
+
|
||||
+config MHASWELL
|
||||
+ bool "Intel Haswell"
|
||||
+ ---help---
|
||||
+
|
||||
+ Select this for 4th Gen Core processors in the Haswell family.
|
||||
+
|
||||
+ Enables -march=haswell
|
||||
+
|
||||
+config MBROADWELL
|
||||
+ bool "Intel Broadwell"
|
||||
+ ---help---
|
||||
+
|
||||
+ Select this for 5th Gen Core processors in the Broadwell family.
|
||||
+
|
||||
+ Enables -march=broadwell
|
||||
|
||||
config GENERIC_CPU
|
||||
bool "Generic-x86-64"
|
||||
@@ -276,6 +375,19 @@ config GENERIC_CPU
|
||||
Generic x86-64 CPU.
|
||||
Run equally well on all x86-64 CPUs.
|
||||
|
||||
+config MNATIVE
|
||||
+ bool "Native optimizations autodetected by GCC"
|
||||
+ ---help---
|
||||
+
|
||||
+ GCC 4.2 and above support -march=native, which automatically detects
|
||||
+ the optimum settings to use based on your processor. -march=native
|
||||
+ also detects and applies additional settings beyond -march specific
|
||||
+ to your CPU, (eg. -msse4). Unless you have a specific reason not to
|
||||
+ (e.g. distcc cross-compiling), you should probably be using
|
||||
+ -march=native rather than anything listed below.
|
||||
+
|
||||
+ Enables -march=native
|
||||
+
|
||||
endchoice
|
||||
|
||||
config X86_GENERIC
|
||||
@@ -300,7 +412,7 @@ config X86_INTERNODE_CACHE_SHIFT
|
||||
config X86_L1_CACHE_SHIFT
|
||||
int
|
||||
default "7" if MPENTIUM4 || MPSC
|
||||
- default "6" if MK7 || MK8 || MPENTIUMM || MCORE2 || MATOM || MVIAC7 || X86_GENERIC || GENERIC_CPU
|
||||
+ default "6" if MK7 || MK8 || MK8SSE3 || MK10 || MBARCELONA || MBOBCAT || MBULLDOZER || MPILEDRIVER || MJAGUAR || MPENTIUMM || MCORE2 || MNEHALEM || MWESTMERE || MSANDYBRIDGE || MIVYBRIDGE || MHASWELL || BROADWELL || MNATIVE || MATOM || MVIAC7 || X86_GENERIC || GENERIC_CPU
|
||||
default "4" if MELAN || M486 || MGEODEGX1
|
||||
default "5" if MWINCHIP3D || MWINCHIPC6 || MCRUSOE || MEFFICEON || MCYRIXIII || MK6 || MPENTIUMIII || MPENTIUMII || M686 || M586MMX || M586TSC || M586 || MVIAC3_2 || MGEODE_LX
|
||||
|
||||
@@ -331,11 +443,11 @@ config X86_ALIGNMENT_16
|
||||
|
||||
config X86_INTEL_USERCOPY
|
||||
def_bool y
|
||||
- depends on MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M586MMX || X86_GENERIC || MK8 || MK7 || MEFFICEON || MCORE2
|
||||
+ depends on MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M586MMX || X86_GENERIC || MK8 || MK8SSE3 || MK7 || MEFFICEON || MCORE2 || MK10 || MBARCELONA || MNEHALEM || MWESTMERE || MSANDYBRIDGE || MIVYBRIDGE || MHASWELL || MBROADWELL || MNATIVE
|
||||
|
||||
config X86_USE_PPRO_CHECKSUM
|
||||
def_bool y
|
||||
- depends on MWINCHIP3D || MWINCHIPC6 || MCYRIXIII || MK7 || MK6 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || MK8 || MVIAC3_2 || MVIAC7 || MEFFICEON || MGEODE_LX || MCORE2 || MATOM
|
||||
+ depends on MWINCHIP3D || MWINCHIPC6 || MCYRIXIII || MK7 || MK6 || MK10 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || MK8 || MK8SSE3 || MVIAC3_2 || MVIAC7 || MEFFICEON || MGEODE_LX || MCORE2 || MNEHALEM || MWESTMERE || MSANDYBRIDGE || MIVYBRIDGE || MHASWELL || MBROADWELL || MATOM || MNATIVE
|
||||
|
||||
config X86_USE_3DNOW
|
||||
def_bool y
|
||||
@@ -359,17 +471,17 @@ config X86_P6_NOP
|
||||
|
||||
config X86_TSC
|
||||
def_bool y
|
||||
- depends on (MWINCHIP3D || MCRUSOE || MEFFICEON || MCYRIXIII || MK7 || MK6 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || M586MMX || M586TSC || MK8 || MVIAC3_2 || MVIAC7 || MGEODEGX1 || MGEODE_LX || MCORE2 || MATOM) || X86_64
|
||||
+ depends on (MWINCHIP3D || MCRUSOE || MEFFICEON || MCYRIXIII || MK7 || MK6 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || M586MMX || M586TSC || MK8 || MK8SSE3 || MVIAC3_2 || MVIAC7 || MGEODEGX1 || MGEODE_LX || MCORE2 || MNEHALEM || MWESTMERE || MSANDYBRIDGE || MIVYBRIDGE || MHASWELL || MBROADWELL || MNATIVE || MATOM) || X86_64
|
||||
|
||||
config X86_CMPXCHG64
|
||||
def_bool y
|
||||
- depends on X86_PAE || X86_64 || MCORE2 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || MATOM
|
||||
+ depends on X86_PAE || X86_64 || MCORE2 || MNEHALEM || MWESTMERE || MSANDYBRIDGE || MIVYBRIDGE || MHASWELL || MBROADWELL || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || MATOM || MNATIVE
|
||||
|
||||
# this should be set for all -march=.. options where the compiler
|
||||
# generates cmov.
|
||||
config X86_CMOV
|
||||
def_bool y
|
||||
- depends on (MK8 || MK7 || MCORE2 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || MVIAC3_2 || MVIAC7 || MCRUSOE || MEFFICEON || X86_64 || MATOM || MGEODE_LX)
|
||||
+ depends on (MK8 || MK8SSE3 || MK10 || MBARCELONA || MBOBCAT || MBULLDOZER || MPILEDRIVER || MJAGUAR || MK7 || MCORE2 || MNEHALEM || MWESTMERE || MSANDYBRIDGE || MIVYBRIDGE || MHASWELL || MBROADWELL || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || MVIAC3_2 || MVIAC7 || MCRUSOE || MEFFICEON || X86_64 || MNATIVE || MATOM || MGEODE_LX)
|
||||
|
||||
config X86_MINIMUM_CPU_FAMILY
|
||||
int
|
||||
--- a/arch/x86/Makefile 2014-08-03 18:25:02.000000000 -0400
|
||||
+++ b/arch/x86/Makefile 2014-09-13 09:37:16.721385247 -0400
|
||||
@@ -92,13 +92,33 @@ else
|
||||
KBUILD_CFLAGS += $(call cc-option,-mpreferred-stack-boundary=3)
|
||||
|
||||
# FIXME - should be integrated in Makefile.cpu (Makefile_32.cpu)
|
||||
+ cflags-$(CONFIG_MNATIVE) += $(call cc-option,-march=native)
|
||||
cflags-$(CONFIG_MK8) += $(call cc-option,-march=k8)
|
||||
+ cflags-$(CONFIG_MK8SSE3) += $(call cc-option,-march=k8-sse3,-mtune=k8)
|
||||
+ cflags-$(CONFIG_MK10) += $(call cc-option,-march=amdfam10)
|
||||
+ cflags-$(CONFIG_MBARCELONA) += $(call cc-option,-march=barcelona)
|
||||
+ cflags-$(CONFIG_MBOBCAT) += $(call cc-option,-march=btver1)
|
||||
+ cflags-$(CONFIG_MBULLDOZER) += $(call cc-option,-march=bdver1)
|
||||
+ cflags-$(CONFIG_MPILEDRIVER) += $(call cc-option,-march=bdver2)
|
||||
+ cflags-$(CONFIG_MJAGUAR) += $(call cc-option,-march=btver2)
|
||||
cflags-$(CONFIG_MPSC) += $(call cc-option,-march=nocona)
|
||||
|
||||
cflags-$(CONFIG_MCORE2) += \
|
||||
- $(call cc-option,-march=core2,$(call cc-option,-mtune=generic))
|
||||
- cflags-$(CONFIG_MATOM) += $(call cc-option,-march=atom) \
|
||||
- $(call cc-option,-mtune=atom,$(call cc-option,-mtune=generic))
|
||||
+ $(call cc-option,-march=core2,$(call cc-option,-mtune=core2))
|
||||
+ cflags-$(CONFIG_MNEHALEM) += \
|
||||
+ $(call cc-option,-march=nehalem,$(call cc-option,-mtune=nehalem))
|
||||
+ cflags-$(CONFIG_MWESTMERE) += \
|
||||
+ $(call cc-option,-march=westmere,$(call cc-option,-mtune=westmere))
|
||||
+ cflags-$(CONFIG_MSANDYBRIDGE) += \
|
||||
+ $(call cc-option,-march=sandybridge,$(call cc-option,-mtune=sandybridge))
|
||||
+ cflags-$(CONFIG_MIVYBRIDGE) += \
|
||||
+ $(call cc-option,-march=ivybridge,$(call cc-option,-mtune=ivybridge))
|
||||
+ cflags-$(CONFIG_MHASWELL) += \
|
||||
+ $(call cc-option,-march=haswell,$(call cc-option,-mtune=haswell))
|
||||
+ cflags-$(CONFIG_MBROADWELL) += \
|
||||
+ $(call cc-option,-march=broadwell,$(call cc-option,-mtune=broadwell))
|
||||
+ cflags-$(CONFIG_MATOM) += $(call cc-option,-march=bonnell) \
|
||||
+ $(call cc-option,-mtune=bonnell,$(call cc-option,-mtune=generic))
|
||||
cflags-$(CONFIG_GENERIC_CPU) += $(call cc-option,-mtune=generic)
|
||||
KBUILD_CFLAGS += $(cflags-y)
|
||||
|
||||
--- a/arch/x86/Makefile_32.cpu 2014-08-03 18:25:02.000000000 -0400
|
||||
+++ b/arch/x86/Makefile_32.cpu 2014-09-13 09:37:16.721385247 -0400
|
||||
@@ -23,7 +23,15 @@ cflags-$(CONFIG_MK6) += -march=k6
|
||||
# Please note, that patches that add -march=athlon-xp and friends are pointless.
|
||||
# They make zero difference whatsosever to performance at this time.
|
||||
cflags-$(CONFIG_MK7) += -march=athlon
|
||||
+cflags-$(CONFIG_MNATIVE) += $(call cc-option,-march=native)
|
||||
cflags-$(CONFIG_MK8) += $(call cc-option,-march=k8,-march=athlon)
|
||||
+cflags-$(CONFIG_MK8SSE3) += $(call cc-option,-march=k8-sse3,-march=athlon)
|
||||
+cflags-$(CONFIG_MK10) += $(call cc-option,-march=amdfam10,-march=athlon)
|
||||
+cflags-$(CONFIG_MBARCELONA) += $(call cc-option,-march=barcelona,-march=athlon)
|
||||
+cflags-$(CONFIG_MBOBCAT) += $(call cc-option,-march=btver1,-march=athlon)
|
||||
+cflags-$(CONFIG_MBULLDOZER) += $(call cc-option,-march=bdver1,-march=athlon)
|
||||
+cflags-$(CONFIG_MPILEDRIVER) += $(call cc-option,-march=bdver2,-march=athlon)
|
||||
+cflags-$(CONFIG_MJAGUAR) += $(call cc-option,-march=btver2,-march=athlon)
|
||||
cflags-$(CONFIG_MCRUSOE) += -march=i686 $(align)-functions=0 $(align)-jumps=0 $(align)-loops=0
|
||||
cflags-$(CONFIG_MEFFICEON) += -march=i686 $(call tune,pentium3) $(align)-functions=0 $(align)-jumps=0 $(align)-loops=0
|
||||
cflags-$(CONFIG_MWINCHIPC6) += $(call cc-option,-march=winchip-c6,-march=i586)
|
||||
@@ -32,8 +40,14 @@ cflags-$(CONFIG_MCYRIXIII) += $(call cc-
|
||||
cflags-$(CONFIG_MVIAC3_2) += $(call cc-option,-march=c3-2,-march=i686)
|
||||
cflags-$(CONFIG_MVIAC7) += -march=i686
|
||||
cflags-$(CONFIG_MCORE2) += -march=i686 $(call tune,core2)
|
||||
-cflags-$(CONFIG_MATOM) += $(call cc-option,-march=atom,$(call cc-option,-march=core2,-march=i686)) \
|
||||
- $(call cc-option,-mtune=atom,$(call cc-option,-mtune=generic))
|
||||
+cflags-$(CONFIG_MNEHALEM) += -march=i686 $(call tune,nehalem)
|
||||
+cflags-$(CONFIG_MWESTMERE) += -march=i686 $(call tune,westmere)
|
||||
+cflags-$(CONFIG_MSANDYBRIDGE) += -march=i686 $(call tune,sandybridge)
|
||||
+cflags-$(CONFIG_MIVYBRIDGE) += -march=i686 $(call tune,ivybridge)
|
||||
+cflags-$(CONFIG_MHASWELL) += -march=i686 $(call tune,haswell)
|
||||
+cflags-$(CONFIG_MBROADWELL) += -march=i686 $(call tune,broadwell)
|
||||
+cflags-$(CONFIG_MATOM) += $(call cc-option,-march=bonnell,$(call cc-option,-march=core2,-march=i686)) \
|
||||
+ $(call cc-option,-mtune=bonnell,$(call cc-option,-mtune=generic))
|
||||
|
||||
# AMD Elan support
|
||||
cflags-$(CONFIG_MELAN) += -march=i486
|
@ -0,0 +1,22 @@
|
||||
# Copyright 1999-2015 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: $
|
||||
|
||||
EAPI=5
|
||||
ETYPE="sources"
|
||||
|
||||
inherit calculate-kernel-7 eutils
|
||||
|
||||
DESCRIPTION="Calculate Linux kernel image"
|
||||
KEYWORDS="~amd64 ~x86"
|
||||
HOMEPAGE="http://www.calculate-linux.org"
|
||||
|
||||
SRC_URI="${KERNEL_URI} ${ARCH_URI}"
|
||||
|
||||
src_unpack() {
|
||||
calculate-kernel-7_src_unpack
|
||||
}
|
||||
|
||||
pkg_postinst() {
|
||||
calculate-kernel-7_pkg_postinst
|
||||
}
|
Loading…
Reference in new issue